2012-10-25 5 views
5

IはjavacsriptでkeyValueのコンストラクタの3つのオブジェクトの配列を有する:配列値のjavascriptを更新するには?

function keyValue(key, value){ 
    this.Key = key; 
    this.Value = value; 
    }; 

    var array = []; 
    array.push(new keyValue("a","1"),new keyValue("b","2"),new keyValue("c","3")); 

IもkeyValue object as parameterを取り、アレイ内のそのオブジェクトの値を更新する機能「更新」を有する:

function Update(keyValue, newKey, newValue) 
    { 
    //Now my question comes here, i got keyValue object here which i have to 
    //update in the array i know 1 way to do this 

    var index = array.indexOf(keyValue); 
    array[index].Key = newKey; 
    array[index].Value = newValue; 
    } 

しかし、もしあればこれを行うより良い方法が欲しい。

+4

なぜオブジェクトを使用しないのですか? 'dict.a = 23;'または 'dict [" a "] = 23のように更新することができます; '... – canon

+1

キヤノンの応答は答えになる可能性があります –

+0

@AndréPena私は答えにそれを昇格させました。 – canon

答えて

10

「これがあれば、これを行うより良い方法を知りたいですか?」

はい、既に元のオブジェクトがあるように見えるため、再度配列からフェッチする理由はありません。

function Update(keyValue, newKey, newValue) 
    { 
    keyValue.Key = newKey; 
    keyValue.Value = newValue; 
    } 
9

なぜオブジェクトを使わないのでしょうか?

var dict = { "a": 1, "b": 2, "c": 3 }; 

次に、あなたがに特定のキーを削除するためにwan't場合、それは同じくらい簡単ですので

dict.a = 23; 

または

dict["a"] = 23; 

のようにそれを更新することができます。

delete dict.a; 

Objects vs arrays in Javascript for key/value pairsを参照してください。
deleteオペレータを参照してください。

+0

鍵を更新していません。ちょうど価値。実際の状況ではこれが許されないかもしれませんが。現在のストレージは、このオブジェクトに対する何らかの代替参照以外ではキーがわからないことを暗示しているようです。 –

+0

私はキーと値のペアのキーを変更することに多くの点を見ません...しかし、それは彼がオブジェクトから(キーによる)プロパティの追加、更新、削除を止めるものではありません。 – canon

+0

確かに、問題には、2つのプロパティを持つオブジェクトへの代替参照があります。理由はわかりませんが、ルックアップ識別子として 'Key'プロパティを持つことは適切ではないかもしれません。 –

6
function Update(key, value) 
{  
    for(var i=0;i<array.length;i++){ 
    if(array[i].Key==key){ 
     array[i].Value=value; 
     break; 
    } 
    } 
} 
3

function keyValue(key, value){ 
    this.Key = key; 
    this.Value = value; 
}; 
keyValue.prototype.updateTo = function(newKey, newValue) { 
    this.Key = newKey; 
    this.Value = newValue; 
}; 

array[1].updateTo("xxx", "999"); 
+0

+1プロトタイプの継承は良い解決策になります。 –

関連する問題