检测重复键并在javascript中将其值替换为数组

时间:2016-11-04 05:17:02

标签: javascript arrays

我是javascript的新手。我正在尝试使用键值对构建一个数组,并且我已经成功完成了。

这是我目前的输出:

My current Output:

现在我想要的是检查数组中每个对象的键。如果该键已经存在,那么该对应键的值将被更新,否则将插入一个带有其值的新键。

我的代码:

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 个答案:

答案 0 :(得分: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 );