无法在循环中添加到javascript数组

jam*_*mes 2 javascript arrays

我遇到以下代码的一些问题:

var tmpArray = new Array();
for(var n in fnlArray){
    if(fnlArray[n] == largest.val){
        alert(fnlArray[n] +"-"+ largest.val);
        tmpArray[n] = fnlArray[n];
    }
}
Run Code Online (Sandbox Code Playgroud)

fnlArray的内容是:

fnlArray['result1'] = 1;
fnlArray['result2'] = 2;
fnlArray['result3'] = 2;
fnlArray['result4'] = 2;
and largest.val = 2;

我遇到的问题是警报被解雇所以我希望最终得到tmpArray以下内容:

tmpArray['result2'] = 2;
tmpArray['result3'] = 2;
tmpArray['result4'] = 2;

但是数组(tmpArray)总是空的.这是在循环中动态地向数组添加项目的问题吗?

Rob*_*b W 6

var tmpArray = new Array(); 应该:

var tmpArray = {};
Run Code Online (Sandbox Code Playgroud)

您的tmpArray对象不是索引数组,因此您必须使用对象文字.

var tmpArray = {};
for(var n in fnlArray){
  if(fnlArray[n] == largest.val){
       tmpArray[n] = fnlArray[n];
  }
}
alert(JSON.stringify(tmpArray)); //Prints: {"result2":2,"result3":2,"result4":2}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/QhFGF/