Javascript 将数组排序为对象,将具有相同值的键和值对推入相同的键/值
我想用键值对数组和对象进行排序 因此,如果我有一个这样的数组[1,2,3,2,4,1,5,1,6],它应该会吐出这样的东西。我试着用lodashJavascript 将数组排序为对象,将具有相同值的键和值对推入相同的键/值,javascript,lodash,Javascript,Lodash,我想用键值对数组和对象进行排序 因此,如果我有一个这样的数组[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] } 您可以使用并返回对象 var-ar=[1,2,3,2,4,1,5,1,6]; var结果=ar.reduce(函数(o,e){ o[e]=(o[e]| |[])。concat(e); 返回o; }, {})
{
1: [1, 1, 1],
2: [2, 2],
3: [3],
4: [4],
5: [5],
6: [6]
}
您可以使用并返回对象
var-ar=[1,2,3,2,4,1,5,1,6];
var结果=ar.reduce(函数(o,e){
o[e]=(o[e]| |[])。concat(e);
返回o;
}, {});
log(result)
一些基本的迭代可以做到这一点,您可以设置一个数组,或者推送到一个现有的数组
var-arr=[1,2,3,2,4,1,5,1,6];
var obj={};
arr.forEach((x)=>obj中的x?obj[x]。推(x):obj[x]=[x]);
document.body.innerHTML=''+JSON.stringify(obj,0,4)+''
这里有一个非常简单的纯JavaScript版本来实现这一点()
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);
}
const arr=[1,2,3,2,4,1,5,1,6];
常数r={};
arr.forEach(e=>r[e]?r[e].push(e):r[e]=[e]);
控制台日志(r)代码>另一种方法是
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),{});
控制台日志(obj)代码>
此声明中没有赋值var newArrayObject[key].push(value)
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);