繁体   English   中英

如何在对象数组中查找项目

[英]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函数中使用itemindex参数(您将其他东西命名为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM