我想用键值对对数组进行排序和对象。
所以,如果我有一个这样的数组[1,2,3,2,4,1,5,1,6],它应该吐出这样的东西。我试图使用lodash!
{
1: [1, 1, 1],
2: [2, 2],
3: [3],
4: [4],
5: [5],
6: [6]
}
答案 0 :(得分:1)
您可以使用reduce()
并返回对象。
var ar = [1, 2, 3, 2, 4, 1, 5, 1, 6];
var result = ar.reduce(function(o, e) {
o[e] = (o[e] || []).concat(e);
return o;
}, {});
console.log(result)
答案 1 :(得分:1)
一些基本的迭代会做到这一点,你可以设置一个数组,或推送到现有的数组
var arr = [1,2,3,2,4,1,5,1,6];
var obj = {};
arr.forEach( (x) => x in obj ? obj[x].push(x) : obj[x] = [x]);
document.body.innerHTML = '<pre>'+ JSON.stringify(obj, 0, 4) +'</pre>'
答案 2 :(得分:0)
这是一个非常简单的纯JavaScript版本(https://jsfiddle.net/azkuodyc/)
var array = [1,2,3,2,4,1,5,1,6];
var newArrayObject = {};
for (key in array) {
var value = array[key];
if (typeof newArrayObject[key] == 'undefined') {
newArrayObject[key] = [];
}
newArrayObject[key].push(value);
}
答案 3 :(得分:0)
CHOICE /M Do you want to copy files? [Y/N]
IF errorlevel 2 goto nagative
IF errorlevel 1 goto makecopy
&#13;
答案 4 :(得分:0)
另一种方法是这样做;
var arr = [1,2,3,2,4,1,5,1,6],
obj = arr.reduce((p,c) => (p[c] = p[c] ? p[c].concat(c) : [c],p),{});
console.log(obj);
&#13;
答案 5 :(得分:0)
var arr = [1,2,3,2,4,1,5,1,6];
var res = _(arr).countBy().mapValues((value, key) => {
return _.times(value, _.constant(parseInt(key)));
}).value();
console.log(res);