如果存在则更改对象

时间:2013-08-08 09:05:32

标签: javascript jquery arrays object

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

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

例如:

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

数组var my_array=[];

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

如何检查对象是否已存在,然后将其替换为新值。

5 个答案:

答案 0 :(得分:1)

你想要这样的东西: -

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

}

答案 1 :(得分:1)

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

  1. 如果它不存在则会被创建。
  2. 如果确实存在则会被覆盖。
  3. 示例:

    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)));

另见下面的小提琴

JSFiddle