Javascript JSON&;安格拉斯。按ID(而不是索引)筛选数组
在不使用索引的情况下,如何通过元素(在本例中是id)过滤此JSONJavascript 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
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' });