我有这样的数组:
array = [
{
id:'ABC',
content: ''XYZ,
people :
[
'User 1',
'User 2'
]
}
{
id:'ABC',
content: ''XYZ,
people :
[
'User 3',
'User 4'
]
}
]
我想找到obj具有people = user 3
的对象。这是我的代码在下面:
array.forEach(function(item, index){
var item = item.reverse().find(item => item.people.indexOf('User 3'));
console.log(item);
});
因为我想获取最新的obj,所以我使用reverse()
。它不起作用吗?我现在能做什么。谢谢
答案 0 :(得分:0)
尝试一下;
array.forEach(function(item){
if(item.people.indexOf('User 3') > -1);
console.log(item);
});
答案 1 :(得分:0)
您可以在此处过滤此类对象-
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")));
答案 2 :(得分:0)
您没有在item
函数中使用index
或forEach
参数(您将其他内容命名为item
,但从未使用过参数),因此您的函数将在每次迭代中执行相同的操作。
var result = array.find( function ( item ) {
return item.people.includes( 'User 3' );
})
result
将是1个对象。如果要查找带有User 3
的所有对象,请使用filter
而不是find
。
答案 3 :(得分:0)
这将为您提供最新的结果。
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]);
答案 4 :(得分: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);
答案 5 :(得分:0)
您还可以使用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);