我有这种数组:
array = [
{
a:0,
b:{x:1,y:2}
},
{
c:0,
b:{x:3,y:2}},
]
我有一个像这样的新对象
{
e:0,
b:{x:2,y:5}
}
我想测试array
中的对象是否具有相同 嵌套 b object
,如果是,我会推送那里的新对象,如果它已经存在,我将用更新的对象替换整个对象。
任何帮助我怎么能实现这一点(Lodash,ES6 ..),
我使用的是Typescript btw。
答案 0 :(得分:1)
您只需对数组使用Array.prototype.some()方法来测试搜索对象中是否存在任何匹配的b
对象,您的代码将为:
function checkIfObjectExists(array, obj) {
return array.some(function(element) {
return (typeof obj.b === typeof element.b) && JSON.stringify(obj.b) === JSON.stringify(element.b);
});
}
这是一个有效的片段:
function checkIfObjectExists(array, obj) {
return array.some(function(element) {
return (typeof obj.b === typeof element.b) && JSON.stringify(obj.b) === JSON.stringify(element.b);
});
}
array = [{
a: 0,
b: {
x: 1,
y: 2
}
},
{
c: 0,
b: {
x: 3,
y: 2
}
},
];
var searched = {
e: 0,
b: {
x: 2,
y: 5
}
};
//Check an existing userId
console.log(checkIfObjectExists(array, searched));
//Check a non existing userId
console.log(checkIfObjectExists(array, {
a: 0,
b: {
x: 1,
y: 2
}
}));
答案 1 :(得分:1)
如果同一个对象已存在,则以下IsExists()返回true,如果同一个对象不存在则返回false。
function IsExists(YourList,Object ) {
var i;
for (i = 0; i < YourList.length; i++) {
if (YourList[i].c === Object .c && YourList[i].b === Object .b) {
return true;
}
}
return false;
}
称你的功能如下:
var NewObject={
e:0,
b:{x:2,y:5}
}
if (!IsExists(array ,NewObject.b))
{
array .push(NewObject);
}
如果IsExists(array,NewObject.b)返回false,则将此对象推送到数组