我正在用对象填充数组。
我想检查某个id
的对象是否已经存在。
如果对象存在,则替换对象中的value
。
例如:
function art(id,value)
{
this.id=id;
this.value=value;
}
数组var my_array=[];
添加到数组my_array.push(art);
如何检查对象是否已存在,然后将其替换为新值。
答案 0 :(得分:1)
你想要这样的东西: -
for (var i = 0; i < my_array.length; i++) {
if(my_array[i].id=="SOMEID")
my_array[i].value="NEWValue";
}
答案 1 :(得分:1)
您应该使用密钥对类型关联数组,然后您甚至不需要检查它是否存在,因为:
示例:
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;
更新为清晰度
答案 2 :(得分:1)
我不确定你在寻找什么,但如果你想检查对象的特定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:总是检查===尽量避免==,因为==有意外行为
答案 3 :(得分:0)
您可以使用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;
}
答案 4 :(得分:0)
请参阅以下示例:
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)));
另见下面的小提琴