您好我正在尝试使用下划线功能执行_.find。当我尝试执行它时,它返回undefined,但是我从该对象搜索的所有字符串始终存在。请在下面找到我的示例数据结构:
oArrays = [
{
"c":"ABC",
"sc":[
{ "name":"ABC123", "t1":0, "t2":0 },
{ "name":"ABC456", "t1":0, "t2":0 },
{ "name":"ABC789", "t1":0, "t2":0 }
]
},
{
"c":"BCDEF",
"sc":[
{ "name":"JJHS", "t1":0, "t2":0 },
{ "name":"JKHJYH", "t1":0, "t2":0 },
{ "name":"DKJHKJ", "t1":0, "t2":0 }
]
},
{
"c":"ZYXV",
"sc":[
{ "name":"KDSKD", "t1":0, "t2":0 },
{ "name":"PWIFGF", "t1":0, "t2":0 },
{ "name":"WWSD", "t1":0, "t2":0 }
]
},
]
_.find(oArrays, function(item){
return item.sc.name==="ABC123" ;
});
以上代码不起作用,结果未定义....是否可以只在一个_.find函数中执行它?
我尝试使用多个_.map函数,它的工作原理。但是尽可能我不想使用它因为它会有太多的循环。 (以下示例)
_.map(oArrays, function(item){
_.find( item.sc, function( item2 ) {
return item2.name==="ABC123" ;
});
});
Ooops,顺便说一下我正在使用sails-controller执行这些代码。
非常感谢任何帮助:)
提前致谢!
答案 0 :(得分:4)
item.sc.name
绝不是字符串,因为您正在尝试将其与之比较。事实上,它实际上是undefined
。但是item.sc
是一个具有name
属性的对象数组。
您必须检查name
属性中是否有您正在寻找的内容:
_.find(oArrays, function(item) {
return _.contains(_.pluck(item.sc, "name"), "ABC123");
});