javascript - 如何检查 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;
}
}
如何在数组中找到一个对象,或者找出它是否存在?
解决方案
如果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>
推荐阅读
- java - 如何将额外的文件与 jlink 图像捆绑在一起
- php - 动态选择 Laravel 认证驱动
- amazon-redshift - 我可以将日期时间字符串输出到 Redshift 并将列作为时间戳吗?
- bash - 在 if 语句中使用 bash 脚本
- .net-core - 在 .NET Core Api 上启用 CORS?
- python - 如何以“pythonic”方式编写 for 循环
- makefile - make文件有什么问题
- gtag.js - “id”参数实际上是做什么的?
- c - 将csv的内容插入结构数组的函数的问题
- python - 使用 Anaconda 在 Ubuntu 中运行“.py”,而不是输入“python”