[英]How to find item in array of objects
我有这样的数组:
array = [
{
id:'ABC',
content: ''XYZ,
people :
[
'User 1',
'User 2'
]
}
{
id:'ABC',
content: ''XYZ,
people :
[
'User 3',
'User 4'
]
}
]
我想找到obj have people = user 3
。 这是下面的代码:
array.forEach(function(item, index){
var item = item.reverse().find(item => item.people.indexOf('User 3'));
console.log(item);
});
因为我想获取最新的obj,所以我使用reverse()
。 它不起作用吗? 我现在能做什么。 谢谢
尝试这个;
array.forEach(function(item){
if(item.people.indexOf('User 3') > -1);
console.log(item);
});
您可以通过以下方法过滤此类对象-
let array = [{ id: 'ABC', content: '', people: [ 'User 1', 'User 2' ] }, { id: 'ABC', content: '', people: [ 'User 3', 'User 4' ] }]; console.log(array.filter(obj => -1 != obj.people.indexOf("User 3")));
您没有在forEach
函数中使用item
或index
参数(您将其他东西命名为item
,但从未使用过参数),因此您的函数将在每次迭代中执行相同的操作。
var result = array.find( function ( item ) {
return item.people.includes( 'User 3' );
})
result
将是1个对象。 如果要使用User 3
查找所有对象,请使用filter
而不是find
。
这将为您提供最新的结果。
const arr = [ { id:'ABC', content: 'XYZ', people : [ 'User 1', 'User 2' ] }, { id:'ABC', 'content': 'XYZ', 'people' : [ 'User 3', 'User 4' ] } ] console.log(arr.filter(item => item.people.includes('User 3')).slice(-1)[0]);
一种选择是使用filter()
获得所有搜索结果。 使用pop()
获得最后一个。
let array = [ {"id":"ABC","content":"XYZ","people":["User 1","User 2"]}, {"id":"ABC","content":"XYZ","people":["User 3","User 4"]}, {"id":"XXX","content":"XXX","people":["User 3","User 4"]} ]; let toSearch = 'User 3'; let result = array.filter(o => o.people.includes(toSearch)).pop(); console.log(result);
您也可以使用Array.find()
方法,例如:
var array = [ { id:'ABC', content: 'XYZ', people : [ 'User 1', 'User 2' ] }, { id:'ABC', content: 'XYZ', people : [ 'User 3', 'User 4' ] } ]; var res = array.find(obj => obj.people.indexOf('User 3') !== -1); console.log(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.