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 に答える
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 に答える