我的以下代码存在一些问题:
var tmpArray = new Array();
for(var n in fnlArray){
if(fnlArray[n] == largest.val){
alert(fnlArray[n] +"-"+ largest.val);
tmpArray[n] = fnlArray[n];
}
}
fnlArray的内容是:
fnlArray ['result1'] = 1;
fnlArray ['result2'] = 2;
fnlArray ['result3'] = 2;
fnlArray ['result4'] = 2;
和maximum.val = 2;
我遇到的问题是触发了警报,因此我期望最终使用以下内容的tmpArray:
tmpArray ['result2'] = 2;
tmpArray ['result3'] = 2;
tmpArray ['result4'] = 2;
但是数组(tmpArray)始终为空。这是在循环内动态向数组添加项目的问题吗?
最佳答案
var tmpArray = new Array();
应为:
var tmpArray = {};
您的
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}
演示:http://jsfiddle.net/QhFGF/