Javascript数组映射2D数组
我正在尝试聚合下面的数组(arr),以便获得如下输出: 所需输出:['2011-04-11','Open',6','2011-04-11','Closed',4]] 但我得到了: 输出:[2011-04-11,开放时间:6,2011-04-11,关闭时间:4] 如何获取javascript数组映射并将其转换为所需的输出 源代码摘录:Javascript数组映射2D数组,javascript,arrays,Javascript,Arrays,我正在尝试聚合下面的数组(arr),以便获得如下输出: 所需输出:['2011-04-11','Open',6','2011-04-11','Closed',4]] 但我得到了: 输出:[2011-04-11,开放时间:6,2011-04-11,关闭时间:4] 如何获取javascript数组映射并将其转换为所需的输出 源代码摘录: var arr = [ ['2011-04-11', 'Open'], ['2011-04-11', 'Closed'], ['2011-0
var arr = [
['2011-04-11', 'Open'],
['2011-04-11', 'Closed'],
['2011-04-11', 'Closed'],
['2011-04-11', 'Open'],
['2011-04-11', 'Open'],
['2011-04-11', 'Open'],
['2011-04-11', 'Closed'],
['2011-04-11', 'Closed'],
['2011-04-11', 'Open'],
['2011-04-11', 'Open']
];
var hist = [];
arr.map(function(a) {
if (a in hist)
hist[a]++;
else
hist[a] = 1;
});
您可以改为使用:
在reduce操作期间,它使用hist
来跟踪在正在构建的新数组中可以找到每个项的位置
如果项目已经存在,它将增加其频率元素(第三个元素)。如果项目尚不存在,它将其频率设置为1,并将hist
更新到新项目的位置
使用
map
时不需要额外的数组,只需返回一些内容即可。在处理数组时,您还希望在中使用indexOf
而不是。否则,如果关键帧不是数字,请使用对象。+1。我提出了console.log(arr.reduce(函数(tillNow,currentItem){tillNow[currentItem]=(tillNow[currentItem]| | 0)+1;返回tillNow;},{})代码>被卡住了:'(
var result = function() {
var hist = {};
return arr.reduce(function(previous, current) {
if (current in hist) {
previous[hist[current]][2]++;
} else {
previous[hist[current] = previous.length] = current.concat(1);
}
return previous;
}, []);
}();