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

时间:2018-06-29 09:33:18

标签: javascript

我有这样的数组:

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()。它不起作用吗?我现在能做什么。谢谢

6 个答案:

答案 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函数中使用indexforEach参数(您将其他内容命名为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);