Javascript 如何使用下划线js从对象数组中查找字符串?
您好,我正在尝试使用下划线函数执行u.find。当我试图执行它时,它返回undefined,但我从这个对象进行的所有字符串搜索都始终存在。请在下面找到我的示例数据结构:Javascript 如何使用下划线js从对象数组中查找字符串?,javascript,node.js,underscore.js,sails.js,Javascript,Node.js,Underscore.js,Sails.js,您好,我正在尝试使用下划线函数执行u.find。当我试图执行它时,它返回undefined,但我从这个对象进行的所有字符串搜索都始终存在。请在下面找到我的示例数据结构: oArrays = [ { "c":"ABC", "sc":[ { "name":"ABC123", "t1":0, "t2":0 }, { "name":"ABC456", "t1":0, "t2":0 }, { "name":"ABC789", "t1":0, "t
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" ;
});
以上代码不起作用,结果未定义。。。。是否可以只在一个u.find函数中执行它
我试着使用多重映射函数,它是有效的。但尽可能多,我不想使用它,因为它会有太多的循环。(样本如下)
哦,顺便说一句,我正在使用sails控制器执行这些代码
非常感谢您的帮助:)
提前谢谢
item.sc.name
从来都不是字符串,因为您试图将它与字符串进行比较。事实上,它实际上是未定义的。但是item.sc
是一个具有name
属性的对象数组
您必须检查name
属性中是否有您想要的:
_.find(oArrays, function(item) {
return _.contains(_.pluck(item.sc, "name"), "ABC123");
});
您好,MaxArt非常感谢您的回复,我运行了这段代码,它运行正常,它返回了匹配搜索的对象。另外,在u.find函数中是否也可以检索已找到搜索的二级索引?@Nina Yes。您可以使用
.indexOf
,而不是.contains
:这将返回包含您要查找的名称的项目索引,如果找不到,则返回-1
。然后您可以执行返回索引!==-1;代码>。
_.find(oArrays, function(item) {
return _.contains(_.pluck(item.sc, "name"), "ABC123");
});