2016-08-11 88 views
0

我有一个如下对象的示例数组,我想要名称为Test的数组中的对象之一。如何使用下划线按键查找数组中的对象

**Results: [ 
{ Name: "Test", 
    Age :21 
    ChildrenObj: 
}, 
{ Name: "Something else", 
    Age :21 
    ChildreObj 
}** 

我使用下面的代码来找到它,它没有返回我正确的数据

var names= (_un.find(data.Results, function(item) { 
     return item.Name= "Test"; 
    })); 

任何方向将不胜感激。

+2

'返回item.Name == “测试”'平等的测试,不做分配。 – Will

+0

@非常感谢。愚蠢的错误,我做到了。这就是为什么我得到了所有的数据。 – kobe

+1

更好的是,最好使用===(3等于)。这也确保它们是相同的类型! 1 ==“1”是真实的,但1 ===“1”不是 – Kalman

回答

1

试试这个:

return item.Name == "Test"; 

你正在做的任务不是comparisson。

Results: [ 
{ Name: "Test", 
    Age :21 
    ChildrenObj: 
}, 
{ Name: "Something else", 
    Age :21 
    ChildreObj 
} 
1

您可以使用过滤器

results = [ 
{ Name : "Test", 
    Age : 21, 
    ChildrenObj : null 
}, 
{ Name : "Something else", 
    Age :21, 
    ChildrenObj : null 
}]; 
var names = results.filter(x => x.Name === "Test"); 
console.log(names); // [ { Name: 'Test', Age: 21, ChildrenObj: null } ] 
2

这里有一个工作例子,只是为了好玩。

var Results = [{ 
 
    Name: "Test", 
 
    Age: 21, 
 
    ChildrenObj: {} 
 
}, { 
 
    Name: "Something else", 
 
    Age: 21, 
 
    ChildrenObj: {} 
 
}]; 
 

 
var names = (_.find(Results, function(item) { 
 
    return item.Name == "Test"; 
 
})); 
 

 
console.log(names);
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

2

var data = [{ 
 
    Name: "Test", 
 
    Age :21 
 
}, 
 
{ Name: "Something else", 
 
    Age :22 
 
}]; 
 
    
 
    
 
console.log(_.findWhere(data, {Age: 22}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

相关问题