拥有具有这种结构的数据:
$input = [ { animal: 'cat', name: 'Rocky', value: 1 },
{ animal: 'cat', name: 'Spot', value: 2 },
{ animal: 'dog', name: 'Spot', value: 3 } ];
需要最快的方法来转换为这种格式:
$output = { animal: [ 'cat', 'dog' ],
name: [ 'Rocky', 'Spot' ],
value: [ 1, 2, 3 ] };
输出的键应等于输入中每个对象中的每个键。输出值应该是具有已排序的唯一值的数组。我找到了一些使用嵌套循环来完成此操作的方法,但比我想要的要慢。输入数组有 30,000 个元素,每个对象有 8 个键,我在 Chrome 中能做到的最好成绩是 300 毫秒。希望降低到 100 毫秒。有没有使用map或reduce更快的方法?
现代浏览器的另一种方式:
$input.reduce(function(acc, obj) {
Object.keys(obj).forEach(function(k) {
acc[k] = (acc[k] || []).concat(obj[k])
})
return acc
},{})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)