判断数组中有没有当前对象:
在很多的写的业务中有需要判断一个对象是否在这个数组中情况
具体代码
当然我这个代码是对原始数组进行了修改,不是单纯的判断
function getObjectNestedPropertyValue(obj, propertyPath) {
return propertyPath.split('.').reduce((o, p) => (o && o[p] ? o[p] : null), obj);
}
function toggleObjectInArrayByNestedProp(array, object, propertyPath) {
// 使用嵌套属性路径获取对象的值
const valueToCompare = getObjectNestedPropertyValue(object, propertyPath);
// 查找对象在数组中的索引
const index = array.findIndex(item => getObjectNestedPropertyValue(item, propertyPath) === valueToCompare);
if (index === -1) {
// 如果对象不在数组中,添加它
array.push(object);
} else {
// 如果对象在数组中,删除它
array.splice(index, 1);
}
}
// 示例用法
const myArray = [
{ id: 1, name: "Alice", details: { age: 25 } },
{ id: 2, name: "Bob", details: { age: 30 } }
];
const newObj = { id: 3, name: "Charlie", details: { age: 30 } }; // 要添加或删除的对象
// 假设我们使用details.age属性来比较对象是否相等
toggleObjectInArrayByNestedProp(myArray, newObj, "details.age");
console.log(myArray); // 结果将根据newObj的存在与否来添加或删除对象