首页 > 解决方案 > 如何检查 JavaScript 对象数组中是否存在特定对象?

问题描述

如何检查 JavaScript 对象数组中是否存在特定对象?

// Main array of objects
var dailogMappingData = [
    {
        "name": "AgglomerativeCluster",
        "size": 3938
    }, {
        "name": "CommunityStructure",
        "size": 3812
    }, {
        "name": "HierarchicalCluster",
        "size": 6714
    }
];


// search object to find in the above array is exist or not: 
var findObj = {
    "name": "CommunityStructure",
    "size": 3812
};


var m, n;

for (m = 0; m < this.dailogMappingData.length; m++) {
    for (n = 0; n < mapKeys.length; n++) {
        if (this.dailogMappingData[m][mapKeys[n]] === newObj[mapKeys[n]]) {
            isInArray = true;
        } else {
            isInArray = false;
        }

    }
    if (isInArray) {
        break;
    }
}

如何在数组中找到一个对象,或者找出它是否存在?

标签: javascriptarraysobjectfind

解决方案


如果name属性是唯一的,您可以简单地检查数组中是否有任何具有相同名称的对象:

var dailogMappingData = [{
  "name": "AgglomerativeCluster",
  "size": 3938
}, {
  "name": "CommunityStructure",
  "size": 3812
}, {
  "name": "HierarchicalCluster",
  "size": 6714
}];

var findObj = {
  "name": "CommunityStructure",
  "size": 3812
};

const isInArray = dailogMappingData.some(item => item.name === findObj.name);

console.log(isInArray);

如果您不能依赖name属性并且需要比较所有属性,您可能需要使用LodashisEqual中的函数

var dailogMappingData = [{
  "name": "AgglomerativeCluster",
  "size": 3938
}, {
  "name": "CommunityStructure",
  "size": 3812
}, {
  "name": "HierarchicalCluster",
  "size": 6714
}];

var findObj = {
  "name": "CommunityStructure",
  "size": 3812
};

const isInArray = dailogMappingData.some(item => _.isEqual(findObj, item));

console.log(isInArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>


推荐阅读