我正在用对象填充一个数组。我想检查某些对象是否id
已经存在。
如果对象存在,则在对象中替换value
。
例如:
function art(id,value)
{
this.id=id;
this.value=value;
}
数组var my_array=[];
添加到数组my_array.push(art);
如何检查对象是否已经存在,然后用新值替换它。
我正在用对象填充一个数组。我想检查某些对象是否id
已经存在。
如果对象存在,则在对象中替换value
。
例如:
function art(id,value)
{
this.id=id;
this.value=value;
}
数组var my_array=[];
添加到数组my_array.push(art);
如何检查对象是否已经存在,然后用新值替换它。
你想要这样的东西吗:-
for (var i = 0; i < my_array.length; i++) {
if(my_array[i].id=="SOMEID")
my_array[i].value="NEWValue";
}
您应该使用密钥对类型关联数组,然后您甚至不需要检查它是否存在,因为:
例子:
var my_array = new Array();
function art(id,value)
{
this.id=id;
this.value=value;
}
var myArt = new art(1,'value');
//if an array item with this id exists it will be overidden else a new
//array item will be created
my_array[myArt.id] = myArt;
更新清晰
我不确定你在找什么,但是如果你想检查对象的特定 id 并替换它的值而不是我想的
for(var i = 0; i < my_array.length; i++){
if(my_array[i].id === "#123"){
my_array[i].value = "Some New Value to it"
}
}
PS:总是检查 === 尽量避免 ==,因为 == 有意外的行为
你可以使用一个Object
:
var my_array = {};
function art(id, value)
{
this.id = id;
this.value = value;
}
// test 1:
var newArt1 = new art(1, "value");
if(typeof my_array[newArt1.id] === "undefined" ){ // check if id 1 exists in object;
my_array[newArt1.id] = newArt1.value;
}
// test 2:
var newArt2 = new art("xxx", "value");
if(typeof my_array[newArt2.id] === "undefined" ){ // check if id xxx exists in object;
my_array[newArt2.id] = newArt2.value;
}
请看下面的例子:
var my_array = [];
function art(id, value) {
this.id = id;
this.value = value;
}
function checkIfExistsAndReplace(inArr, object, newValue) {
for (i = 0; i < inArr.length; i++) {
if (inArr[i].id == object.id && inArr[i].value == object.value) {
inArr[i].value = newValue;
return inArr;
}
}
return false;
}
for (var i = 0; i < 5; i++) {
my_array.push(new art("name", i));
}
console.log(my_array);
console.log(checkIfExistsAndReplace(my_array, new art('name', 4), 'NEWVALUE'));
console.log(checkIfExistsAndReplace(my_array, new art('name', 5)));
另请参阅下面的小提琴