Javascript 使用数组';价值观
我在Javascript 使用数组';价值观,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我在javascript中有一个数组,看起来像:[[1,23.34,-5.22],[1,2.34,-52.22],[2,0.34,-5.02],…]。我需要按数组中的第一个数字进行分组,并生成两个不同的输出: 对象(key:2D数组),其外观如下: {1: [[23.34, -5.22], [2.34, -52.22]], 2: [[0.34, -5.02], ...], ...} 仅表示分组的三维阵列: [[[23.34, -5.22], [2.34, -52.22]], [[0.3
javascript
中有一个数组,看起来像:[[1,23.34,-5.22],[1,2.34,-52.22],[2,0.34,-5.02],…]
。我需要按数组中的第一个数字进行分组,并生成两个不同的输出:
key:2D数组
),其外观如下:
{1: [[23.34, -5.22], [2.34, -52.22]],
2: [[0.34, -5.02], ...],
...}
[[[23.34, -5.22], [2.34, -52.22]], [[0.34, -5.02], ...], ...]
ES6
。如有任何建议,将不胜感激。请检查此代码
let数组=[[1,23.34,-5.22],[1,2.34,-52.22],[2,0.34,-5.02];
设obj={};
array.forEach(子数组=>
{
设key=subArray[0];
如果(!obj[key])
obj[key]=[];
子阵列拼接(0,1);
obj[键]。推送(子阵列);
});
控制台日志(obj);
设keys=Object.keys(obj);
设array3D=[];
keys.forEach(key=>{
array3D.push(对象[键])
});
控制台日志(array3D)
已经有一个答案使用了map
方法,但我发现在这种情况下使用forEach
更合适
const a=[
[1, 23.34, -5.22], [1, 2.34, -52.22], [2, 0.34, -5.02]
];
设b={};
设c=[];
a、 forEach(x=>{
如果(!b[x[0]]){
b[x[0]]=[];
}
b[x[0]]推(x.slice(1));
});
控制台日志(b);
Object.values(b.forEach(x=>c.push(x));
控制台日志(c)你自己试过什么吗?我也添加了这段代码,但是我不知道如何用原生JavaScript解决这个问题。感觉我需要使用reduce函数,但我不确定如何阅读reduce。在这种情况下,我看不到任何应用程序。您在这里使用map
容易混淆。虽然.map()
的字符数略少,但实际使用它的目的相当于.forEach()
。通过发布答案,你要做的主要事情是回答一个问题,即询问如何做某事(即,你正在帮助人们学习如何做某事)。因此,保持清晰比保存多达8(2*4)个字符(或者只是想变得聪明,或者在堆栈溢出上打代码高尔夫)重要得多。@Makyen谢谢你通知我