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

9

如果我有一个数组,如[{a:'b'},{ }],如果我尝试查找元素{}的索引,则无法获取正确的索引。

我尝试过indexOf、findIndex和lodash的findIndex,但所有返回的结果都是-1,而不是1,可能是因为引用。

实际的索引应该是1,而不是-1。

3个回答

6
您可以使用findIndexObject.keys()来完成此操作:

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

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

console.log(emptyIndex);


2
如果您搜索一个空对象,那么您将搜索目标对象的相同对象引用。您可以搜索没有键的对象。"最初的回答"

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

console.log(index);


1
您可以使用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);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接