JavaScript 如何检查对象值是否存在,而不向数组中添加新对象
在本教程中,我们需要检查JavaScript对象数组中是否存在对象,如果不存在,则需要向数组中添加一个新对象。我们可以说,在Javascript中,每个变量都是一个对象。例如,我们有一个像下面这样的对象数组。
obj = { id: 1, name: ''Geeks1" },
{ id: 2, name: '"Geeks2"},
{ id: 3, name: "Geeks3" }
方法: 我们在JavaScript中使用了 some() 方法函数。some()方法用于检查数组中的某些元素是否通过回调函数提供的测试。对于空数组元素,此方法不起作用,并且不会修改原始数组。
语法:
obj.some(function(value, index)
例子1: 下面的代码检查对象值是否存在于数组中。通过使用 some() 函数,我们检查数组“obj”中的每个对象是否包含具有特定值的属性,即在本例中具有id和name。 “obj.some”接受函数参数“gfg”,如果数组(obj)中找到所需的对象,则返回“true”。带有对象值的name参数的 checkName() 函数返回布尔值。
Javascript
var obj = [{ id: 1, name: "Geeks1" },
{ id: 2, name: "Geeks2" },
{ id: 3, name: "Geeks3" }]
function checkName(name) {
return obj.some(function (gfg) {
return gfg.name === name;
});
}
console.log(checkName('Geeks1'));
console.log(checkName('Geeks4'));
输出:
true
false
示例2: 以下示例演示如果数组中不存在对象,则将对象添加到数组中。
要添加一个新对象,我们使用 obj.length+1 将一个新元素推入数组。 length 是对象的属性,返回 数组 的长度。 push() 方法将对象附加到数组,并将元素添加到对象数组的末尾。我们有一个函数”checkName”,通过该函数将名称作为参数传递,一旦名称与对象的名称匹配,它将返回”true”。在 addObj() 函数中,如果遇到任何新名称,将使用 push() 函数将元素插入到下一个后续的id中。
Javascript
var obj = [{ id: 1, name: "Geeks1" },
{ id: 2, name: "Geeks2" },
{ id: 3, name: "Geeks3" }]
function checkName(name) {
return obj.some(function (gfg) {
return gfg.name === name;
});
}
function addObj(name) {
if (checkName(name)) {
return false;
}
obj.push({ id: obj.length + 1, name: name });
return true;
}
console.log("Adding 'Geeks1' which is not present in the obj")
addObj('Geeks1')
console.log(obj)
console.log("*******************************************")
console.log("Adding 'Geeks4' which is not present in the obj")
addObj('Geeks4')
console.log(obj)
输出:
Adding 'Geeks1' which is not present in the obj
[
{ id: 1, name: 'Geeks1' },
{ id: 2, name: 'Geeks2' },
{ id: 3, name: 'Geeks3' }
]
*******************************************
Adding 'Geeks4' which is not present in the obj
[
{ id: 1, name: 'Geeks1' },
{ id: 2, name: 'Geeks2' },
{ id: 3, name: 'Geeks3' },
{ id: 4, name: 'Geeks4' }
]