var arr = [
{"code": "a", "poll": 7}, {"code": "b", "poll": 2}, {"code": "c", "poll": 18}, {"code": "a", "poll": 5}, {"code": "c", "poll": 12}, {"code": "a", "poll": 1} ];
var arr2 = [
{"code": "a", "poll": 13}, {"code": "b", "poll": 2}, {"code": "c", "poll": 30}
];
如何实现arr → 到arr1 的转变,且code值 不仅仅为 a b c 也可能为 adsdsd dsdsd a223 任意值 如何实现 类似转变
付费偷看金额在0.1-10元之间
你这是js吧
第一个例子的思路是很直觉的解决,用for语句寻遍整个原先的阵列(arr),另外用个新的阵列装找到的每个物件,如果发现在新阵列(arr2)中的物件中的code属性有相同的,就不新增,而是作poll属性的相加:
给你来一个不考虑性能的
我写了个解决的例子,参考一下。不过我要先讲一下,你的问题中就已经有错误的语法。物件字面定义不是这样用的,这像是JSON格式:
第二个例子的思路,是先不管新阵列长什么样,反正这里主要看的是物件中的code属性,相同的的code属性的值,要把对应的poll属性相加就是。所以先作这件事,最后再来组合新阵列。
再来个一次遍历的,以空间换时间。
这如果是JSON字串,要先解析为物件才是对的作法。
会有第二种的思路是在js中有一些物件的内建运算符或方法,可以用得上,看起来代码行数会少些。稍微测了一下大数据(阵列中有100万与1000万笔物件,code只有10种情况时),第一种比较快,大约是第二种的3-4倍快,实际还是要看应用。
一周热门 更多>