1

我是 JavaScript 新手,如果有字母,我正在尝试删除数组的数组

例如:[["x","y", 2],[2, 4],[5, 3],[6, 9],["a", 1]]

预期的输出将是[[2, 4],[5, 3],[6, 9]]

4

3 回答 3

2

在你的情况下,我认为问题是内循环。因为data[i][j]will"x","y",2,4,5...并且您不能应用于indexOf()数字,所以它会引发错误。

Array.prototype.every()你可以在里面使用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)

于 2019-03-14T19:46:37.393 回答
2

您的代码不起作用有两个原因:

  1. 您在内部循环声明中使用i而不是j

  2. 你正试图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);

编辑:更新代码以解决此评论:

如果第一个数组中有任何字母,它将被删除

于 2019-03-14T20:00:46.243 回答
1

要使用单循环达到预期结果,请使用过滤器和 Math.max,如果数组包含字符串,则返回 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))));

codepen- https://codepen.io/nagasai/pen/zbRbob?editors=1010

于 2019-03-14T20:49:52.450 回答