JavaScript - 如何从数组数组中删除所有字母
JavaScript - How to remove all letters from an array of arrays
我是 JavaScript 的新手,如果有字母
,我将尝试删除数组中的一个数组
例如:[["x","y", 2],[2, 4],[5, 3],[6, 9],["a", 1 ]]
预期输出为:[[2, 4],[5, 3],[6, 9]]
;
在你的情况下,我认为问题出在内部循环上。因为 data[i][j]
会 "x","y",2,4,5...
而你不能将 indexOf()
应用于数字,所以它会抛出错误。
你可以使用Array.prototype.every()
inside Array.prototype.filter()
var data = [["y","x",2],[2, 4],[5, 3],[6, 9]]
let res = data.filter(x => x.every(x =>!isNaN(x)));
console.log(res)
您的代码不起作用有两个原因:
您在内部循环声明中使用 i
而不是 j
您正在尝试对一个号码indexOf()
您想要的输出存在一些小的不确定性,但这里有一个使用 Array.filter()
and Array.every()
.
的解决方案
var data = [["a","b",1,2],["y", "x"],[2, 4],[5, 3],[6, 9]];
var result = data.filter(group => group.every(item => !isNaN(item)));
console.log(result);
编辑:更新代码以解决此评论:
if there is any letter in the first array it would be removed
要通过单循环获得预期结果,请使用过滤器和 Math.max,如果数组包含字符串,则 returns NaN for Math.max
var data = [["x","y", 2],[2, 4],[5, 3],[6, 9],["a", 1]];
console.log(data.filter(v => !isNaN(Math.max.apply(Math, v))));
我是 JavaScript 的新手,如果有字母
,我将尝试删除数组中的一个数组例如:[["x","y", 2],[2, 4],[5, 3],[6, 9],["a", 1 ]]
预期输出为:[[2, 4],[5, 3],[6, 9]]
;
在你的情况下,我认为问题出在内部循环上。因为 data[i][j]
会 "x","y",2,4,5...
而你不能将 indexOf()
应用于数字,所以它会抛出错误。
你可以使用Array.prototype.every()
inside Array.prototype.filter()
var data = [["y","x",2],[2, 4],[5, 3],[6, 9]]
let res = data.filter(x => x.every(x =>!isNaN(x)));
console.log(res)
您的代码不起作用有两个原因:
您在内部循环声明中使用
i
而不是j
您正在尝试对一个号码
indexOf()
您想要的输出存在一些小的不确定性,但这里有一个使用 Array.filter()
and Array.every()
.
var data = [["a","b",1,2],["y", "x"],[2, 4],[5, 3],[6, 9]];
var result = data.filter(group => group.every(item => !isNaN(item)));
console.log(result);
编辑:更新代码以解决此评论:
if there is any letter in the first array it would be removed
要通过单循环获得预期结果,请使用过滤器和 Math.max,如果数组包含字符串,则 returns NaN for Math.max
var data = [["x","y", 2],[2, 4],[5, 3],[6, 9],["a", 1]];
console.log(data.filter(v => !isNaN(Math.max.apply(Math, v))));