Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 如何使用下划线js从对象数组中查找字符串?_Javascript_Node.js_Underscore.js_Sails.js - Fatal编程技术网

Javascript 如何使用下划线js从对象数组中查找字符串?

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

您好,我正在尝试使用下划线函数执行u.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" ;
});
以上代码不起作用,结果未定义。。。。是否可以只在一个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");
});