2016-11-04 3 views
0

私はjavascriptの新機能です。キー値のペアを持つ配列を作成しようとしています。重複キーを検出し、その値をjavascriptの配列内で置き換えます。

これは私の現在の出力です:

My current Output:

今、私が欲しいものarray.If内の各オブジェクトのキーをチェックすることですキーが既にその対応するキーの値が更新されますその後、存在しますそれ以外の場合は、その値を持つ新しいキーが挿入されます。

マイコード:

function pushToAry(name, val) { 
//alert("In the array"); 
var flag=1; 
    kony.print("name-->"+name+" val-->"+val); 
    for (var i in ARY) { 
    kony.print("ARY[i].name-->"+ARY[i].name+" ARY[i].val-->"+ARY[i].val); 
    if (ARY[i].name == name) { 
    kony.print("In if"); 
     ARY[i].val = val; 
     flag=0; 
     break; //Stop this loop, we found it! 

    }else{ 
     kony.print("In else"); 
    } 
    } 


    if(flag==1){ 
    kony.print("flag is 1-->"+flag); 
    var obj = {}; 
    obj[name] = val; 
    ARY.push(obj); 
    } 
} 

私の上記のコードは動作しません。 ARY [i] .nameとARY [i] .valが定義されていません

ARYは、私がここでやっている何を間違ったARY=[];

として定義されているグローバル配列ですか?

+1

動作するはずです。 1つのプロパティを持つオブジェクトの配列があります。これはあなたが実際にやりたがっているように聞こえますが、Javascript Objectはネイティブに非常によく似たことをします: 'var foo = {}; foo [name] = val; ' – Tibrogargan

+0

この記事をご覧ください - > http://stackoverflow.com/a/1988361/4361743 – karman

+0

Downvoter care to explain ?? – kgandroid

答えて

1

これはあなたのデータ構造は少し奇妙である

function pushToAry(name, val) { 
 
     for (var i = 0; i < ARY.length; i++) { 
 
      if (ARY[i].hasOwnProperty(name)) { 
 
       ARY[i][name] = val; 
 
       return; 
 
      } 
 
     } 
 
    
 
     var obj = {}; 
 
     obj[name] = val; 
 
     ARY.push(obj); 
 
    } 
 

 
    function init() { 
 
     ARY = []; 
 
     pushToAry("Label", 1000.0); 
 
     pushToAry("Label", 1000.1); 
 
     console.log(`ARY has ${ARY.length} entries`); 
 
     console.log(`ARY[0].Label: ${ARY[0].Label}`); 
 
    } 
 

 
    document.addEventListener("DOMContentLoaded", init, false);

+0

私に試してみよう..... – kgandroid

+0

コンパイルエラーを返すパースエラー。失われた; forループの初期化子の後に(ARYのelemを入力してください) – kgandroid

+0

私はあなたが誤植をしていると信じています。 – Tibrogargan

関連する問題