目前我的数组看起来像
[{index: 1, value: 'A'},
{index: 1, value: 'B'},
{index: 2, value: 'C'},
{index: 5, value: 'D'}]
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其变成类似
{
1: ['A', 'B'],
2: ['C'],
5: ['D']
}
Run Code Online (Sandbox Code Playgroud)
目前,我只是对数组进行排序,然后运行一个复杂的for循环
您可以使用.groupBy+ .mapValues+.map
var data = [{
index: 1, value: 'A'
}, {
index: 1, value: 'B'
}, {
index: 2, value: 'C'
}, {
index: 5, value: 'D'
}];
var result = _(data)
.groupBy('index')
.mapValues(function (el) {
return _.map(el, 'value');
})
.value();
console.log(result);Run Code Online (Sandbox Code Playgroud)
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.0.0/lodash.js"></script>Run Code Online (Sandbox Code Playgroud)
也可以避免多次操作,只能.reduce像这样使用
var data = [{
index: 1, value: 'A'
}, {
index: 1, value: 'B'
}, {
index: 2, value: 'C'
}, {
index: 5, value: 'D'
}];
var result = data.reduce(function (prev, current) {
if (typeof (prev[current.index]) === 'undefined') {
prev[current.index] = [];
}
return prev[current.index].push(current.value) && prev;
}, {});
console.log(result);Run Code Online (Sandbox Code Playgroud)
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>Run Code Online (Sandbox Code Playgroud)