js数组相关的一个功能实现问题。

var items = [
{name: "one",amount: 14},
{name: "two",amount: 14},
{name: "one",amount: 11},
{name: "two",amount: 2}
];
var items=[
{name:"one",amount:25},
{name:"two",amount:16}
];
上面得数组怎么进行循环判断才能 得到 下面得数组呢 (amount 是 相同得name 相加) 我想了半天不知道如何判断 相同得名字name, amount 相加。
这个怎么做啊,我研究了好久,但没啥思路


    var items = [
   { name: "one", amount: 14 },
   { name: "two", amount: 14 },
   { name: "one", amount: 11 },
   { name: "two", amount: 2 }
    ];
    var kv = {},i
    for (var i = 0; i < items.length; i++) kv[items[i].name] = (kv[items[i].name] || 0) + items[i].amount;
    items = []
    i = 0;
    for (attr in kv) items[i++] = { name: attr, amount: kv[attr] }
    console.log(items)

根据名字获取所有值,再split(“,”)获取相关数组,在相加

 var items = [
{name: "one",amount: 14},
{name: "two",amount: 14},
{name: "one",amount: 11},
{name: "two",amount: 2}
];
var map = {}
for( var i in items){
    var item = items[i];
    map[item.name] =(map[item.name] || 0) + item.amount;
}
var items1  = []
for( var i in map){
    var map1 = {};
    map1[i] = map[i];
    items1.push(map1)
}
alert(JSON.stringify(items1 ) );

给你个思路。
1.首先你有个数组
var items = [
{name: "one",amount: 14},
{name: "two",amount: 14},
{name: "one",amount: 11},
{name: "two",amount: 2}
];
2.其次你要有个结果数组var result=[];
3.初始一个对象var obj={};
4.循环items的同时循环result,
判断条件:如果items对象a的名字result中没有则把对象a插入result中,如果result存在a,则把a对象的amount值相加,
这里就是把名字不同的对象,插入result。
5,输出result.

var items = [

{name: "one",amount: 14},
{name: "two",amount: 14},
{name: "one",amount: 11},
{name: "two",amount: 2}
];
console.log(items[0]);

for(var i=items.length-1; i > 0; i--){

var data = items[i];
//console.log(i);
for(var j=i-1; j >= 0; j--){
    var data_ = items[j];
    if(data.name == data_.name){
        console.log(data.name);
        items[j].amount += data.amount;
        items.splice(i,1);
        break;
    }
}

}
console.log(items);

妹子试试,可以关注我哦

拿去你的正确答案

图片说明

图片说明