Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数组排序为对象,将具有相同值的键和值对推入相同的键/值_Javascript_Lodash - Fatal编程技术网

Javascript 将数组排序为对象,将具有相同值的键和值对推入相同的键/值

Javascript 将数组排序为对象,将具有相同值的键和值对推入相同的键/值,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,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;
}, {});

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);