0

我正在用对象填充一个数组。我想检查某些对象是否id已经存在。

如果对象存在,则在对象中替换value

例如:

function art(id,value)
{
    this.id=id;
    this.value=value;
}

数组var my_array=[];

添加到数组my_array.push(art);

如何检查对象是否已经存在,然后用新值替换它。

4

5 回答 5

1

你想要这样的东西吗:-

for (var i = 0; i < my_array.length; i++) {
    if(my_array[i].id=="SOMEID")
        my_array[i].value="NEWValue";

}
于 2013-08-08T09:14:54.757 回答
1

您应该使用密钥对类型关联数组,然后您甚至不需要检查它是否存在,因为:

  1. 如果它不存在,它将被创建。
  2. 如果它确实存在,它将被覆盖。

例子:

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;

更新清晰

于 2013-08-08T09:17:07.933 回答
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:总是检查 === 尽量避免 ==,因为 == 有意外的行为

于 2013-08-08T10:25:16.253 回答
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;
}
于 2013-08-08T09:15:38.487 回答
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)));

另请参阅下面的小提琴

JSFiddle

于 2013-08-08T09:18:34.177 回答