我有一个JavaScript数组:
var final = {[a, 10], [b, 2]};
我希望最终数组看起来像:
<select ng-change="onChange(item)" ng-model="item.Probability" ng-options="item as item.text for item in Probability">
</select>
当第一个元素匹配时,通过将二维数组的第二个元素相加来形成最终数组 请告知如何在JavaScript中实现这一目标
答案 0 :(得分:1)
我认为你的意思是数组的第一项是字符串,最外面的数组是用方括号包装的,这意味着你的输入应该是这样的。
var arr = [["a", 1], ["b", 2], ["a", 4], ["a", 5]];
var mergeItem = function(list) {
var map = {};
for(var i = 0 ; i < list.length; i ++){
var currentItem = list[i];
if(!map[currentItem[0]]){
map[currentItem[0]] = 0;
}
map[currentItem[0]] += currentItem[1];
}
var result = [];
var keys = Object.keys(map);
for(var i = 0; i < keys.length; i ++ ){
result.push([keys[i], map[keys[i]]]);
}
return result;
}
mergeItem(arr);