我有一个这样的数组:
employees = [
{
"id": 1,
"shift_id": 1,
"days": {
"2012-03-01": 1,
"2012-03-02": 1,
"2012-03-03": 1,
"2012-03-04": 0,
"2012-03-05": 0,
"2012-03-06": 0
}},
{
"id": 2,
"shift_id": 1,
"days": {
"2012-03-01": 0,
"2012-03-02": 1,
"2012-03-03": 1,
"2012-03-04": 1,
"2012-03-05": 1,
"2012-03-06": 0
}},
{
"id": 3,
"shift_id": 2,
"days": {
"2012-03-01": 0,
"2012-03-02": 0,
"2012-03-03": 1,
"2012-03-04": 1,
"2012-03-05": 1,
"2012-03-06": 1
}}
];
有没有办法用id值来访问这个数组中的元素?也许是jquery中的东西?比如$(employees('id = 1');
9条答案
按热度按时间gcmastyq1#
只需遍历数组并检查id:
lf3rwulv2#
您可以使用类似以下的函数,适当地筛选数组:
3j86kqsm3#
你可以用
.grep()
方法记载here:r1zhe5dt4#
有一种jQuery方法可以做到这一点:
我仍然想知道为什么不直接用
id
来索引源数组。5kgi1eie5#
也许你正在寻找类似下面的东西:
z9zf31ra6#
或者这样:
s4chpxco7#
据我所知,为了实现这一点,您必须循环遍历它们
这个函数应该会有帮助。它将扩展数组对象,以便您可以将其用作
myArray.getObjectbyId(id);
根据设计,这将返回符合条件的第一个对象。您可以像这样扩展它:
如果有多个对象符合准则,则会传回对象数组。
这进一步扩展了它以查找任何标准。
hmae6n7t8#
我知道这个问题已经很老了,但为了将来的参考,如果还有人偶然发现这个问题...
与其试图过度设计一个函数来解析/检查JSON,不如考虑更改数据的结构以适应其用途。
请考虑问题中的示例:
以这种方式构造数据只能让您顺序访问对象,而无法通过特定的索引查找对象。数组索引在这种情况下通常没有意义。
如果id是非连续的或字母数字的,会发生什么?
使用数组不能帮助你更快地搜索,你仍然需要循环...
请考虑使用哈希表/对象:
您可以为键使用字符串值,并通过执行以下操作直接访问数据:
如果你想找到的数据是O(n)的,给予你可以直接访问这些数据,通过重新组织数据的结构,我们就可以从O(n)的搜索变成O(1)的搜索。
请记住,此方法可能对某些解决方案比其他解决方案更有效,并且还有许多其他注意事项需要考虑。
这只是解决您想要依唯一性质查阅数据时问题的一种方法。
zzlelutf9#
公认的答案是伟大的-修改了一点AngularJS应用程序: