Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON&;安格拉斯。按ID(而不是索引)筛选数组_Javascript_Angularjs_Arrays_Json - Fatal编程技术网

Javascript JSON&;安格拉斯。按ID(而不是索引)筛选数组

Javascript JSON&;安格拉斯。按ID(而不是索引)筛选数组,javascript,angularjs,arrays,json,Javascript,Angularjs,Arrays,Json,在不使用索引的情况下,如何通过元素(在本例中是id)过滤此JSON ABC: [{ ID: home, elementsHome: [ { el1: x, el2: y}, { el3: d, el4: s}] }, { ID: payments, elementsPaymets: etc... }]; 像这样带有ng repeat的html不起作用:在ABC.element2

在不使用索引的情况下,如何通过元素(在本例中是id)过滤此JSON

     ABC: [{
 ID: home,
 elementsHome: [
       {
       el1: x,
       el2: y},
       {
       el3: d,
       el4: s}]
  },
  {
  ID: payments,
  elementsPaymets: etc...
  }];
像这样带有ng repeat的html不起作用:在ABC.element2 | filter:{id:“good”}中的ng repeat:item。唯一的方法是以这种方式重新编写ABC ABC[0],但这是我想要避免的

谢谢

Array.prototype.filter迭代一个数组,并根据您提供的函数返回一个新的过滤数组。该函数接收数组项、索引和数组作为参数。函数必须返回true或false。如果迭代返回true,则保留它,如果返回false,则删除它


编辑

听起来您实际上是在试图在数组中查找单个项并访问该项上的属性。因此,如果您知道您的身份证:

var curId = 'HOME'
然后您可以找到具有该id的项目:

var item = ABC.find(function(item) {
  return item.id === curId
})
如果存在匹配项,您可以访问所需的密钥:

item && item['elements' + curId.substr(0, 1) + curId.substr(1).toLowerCase()]

你能不能不使用
Array.prototype.filter
,和按ID属性过滤?你能给我举个例子吗?我还是一个小安格拉斯:如果你不使用ES6。。你正在使用es5..试试LODASH。。方法u.filter()或u.find()适合您什么是
ABC.element2
?如果你过滤
{{item.id}}
这是可行的。Dario(意大利语?)问题是我想像过滤一样使用id,但我不想显示它。我需要展示element2中的元素。我本来希望OP能自己解决这个问题,但你给出了一个很好的例子。现在你能解释一下它的作用吗?我试着这样做,我会给你一个关于结果的反馈:我正在尝试在我的angularjs文件中包含这段代码的翻译。(fulthermore我必须更改类似“item.id”的内容,因为我的id是我在ng repeat中调用的项目之一,而不是“son”)请提供一些更完整的代码,以便我们能够清楚地了解您试图实现的目标。情况是:我必须在我的主页中包含一个id=home的教程代码。此外,我还有另一个教程要包含在网站的另一个部分中,ID=付款。因此:
item && item['elements' + curId.substr(0, 1) + curId.substr(1).toLowerCase()]
_.filter(ABC, { 'id': 'good' });