在二维数组的一列上使用 map.reduce
Using map.reduce on one column from a 2d array
好的,所以我只想知道给定数据列中的数字 x。我知道我可以这样做:
function countx (data,column){
var result = 0;
for (var i=0; i<data.length;i++)
{
if(data[i][column]=="x") result++;
}
return result;
}
但似乎使用 map.reduce 会更好,但我不确定如何在二维数组上使用 reduce,我在这里找到了关于这个主题的最流行的帖子比我的情况更复杂。
您想将以下脚本转换为使用 map 和 reduce 的脚本。
function countx (data,column){
var result = 0;
for (var i=0; i<data.length;i++)
{
if(data[i][column]=="x") result++;
}
return result;
}
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改后的脚本:
function countx (data,column) {
var result = data.reduce(function(c, e) {
if (e[column] == "x") c++;
return c;
}, 0);
return result;
}
- 在你的脚本中,我认为 "reduce" 比 "map" 更合适。
- 当使用"reduce"时,初始值可以给定为
}, 0);
。
- 在此修改后的脚本中,可以是 运行 启用和不启用 V8。
参考:
如果我误解了你的问题,这不是你想要的方向,我很抱歉。
最简单的方法是 filter
:
function countx (data,column){
return data.filter(row=>row[column]==="x").length;
}
console.info(countx([["a"],["b"],["x"],["x"],["c"]],0))
好的,所以我只想知道给定数据列中的数字 x。我知道我可以这样做:
function countx (data,column){
var result = 0;
for (var i=0; i<data.length;i++)
{
if(data[i][column]=="x") result++;
}
return result;
}
但似乎使用 map.reduce 会更好,但我不确定如何在二维数组上使用 reduce,我在这里找到了关于这个主题的最流行的帖子比我的情况更复杂。
您想将以下脚本转换为使用 map 和 reduce 的脚本。
function countx (data,column){ var result = 0; for (var i=0; i<data.length;i++) { if(data[i][column]=="x") result++; } return result; }
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改后的脚本:
function countx (data,column) {
var result = data.reduce(function(c, e) {
if (e[column] == "x") c++;
return c;
}, 0);
return result;
}
- 在你的脚本中,我认为 "reduce" 比 "map" 更合适。
- 当使用"reduce"时,初始值可以给定为
}, 0);
。 - 在此修改后的脚本中,可以是 运行 启用和不启用 V8。
参考:
如果我误解了你的问题,这不是你想要的方向,我很抱歉。
最简单的方法是 filter
:
function countx (data,column){
return data.filter(row=>row[column]==="x").length;
}
console.info(countx([["a"],["b"],["x"],["x"],["c"]],0))