如何在对象数组中查找空对象的索引

时间:2019-04-18 07:04:49

标签: javascript arrays json object

如果我有一个类似[{a:'b'},{}]的数组,并且尝试查找元素{}的索引。然后我无法获得正确的索引。

我尝试了indexOf,findIndex和lodash的findIndex,但是由于引用,它们都返回-1而不是1。

实际索引应为1而不是-1。

3 个答案:

答案 0 :(得分:3)

您可以使用findIndexObject.keys()

const arr = [{a:'b'}, {}];

const emptyIndex = arr.findIndex((obj) => Object.keys(obj).length === 0);

console.log(emptyIndex);

答案 1 :(得分:3)

如果搜索空对象,则搜索与目标对象相同的对象引用。

您可以搜索没有键的对象。

var array = [{ a: 'b' }, {}] ,
    index = array.findIndex(o => !Object.keys(o).length);

console.log(index);

答案 2 :(得分:0)

您可以使用Object.keys(obj).length === 0 && obj.constructor === Object来检查空对象。

var a = [{a:'b'},{}] 
    var index;
    a.some(function (obj, i) {
        return Object.keys(obj).length === 0 && obj.constructor === Object ? (index = i, true) : false;
    });
    console.log(index);

var a = [{a:'b'},{}] 
var index;
a.some(function (obj, i) {
    return Object.keys(obj).length === 0 && obj.constructor === Object ? (index = i, true) : false;
});
console.log(index);