javascript - 需要帮助数组 for 循环 If else 语句

标签 javascript arrays for-loop

需要 For loop array 的帮助,我想要函数的相反数据, 但是当我尝试 arr[i] != elem 时,它会打印出所有数组; 如果我尝试 arr[i] == elem ,它会给我一个我不想要的数组; 仍然不明白为什么它不适用于 !=(不等于)

function filteredArray(arr, elem) {
let newArr = [];
// change code below this line
for(let i = arr.length -1; i >= 0 ; i--) {
  for(let j = arr[i].length-1;j >= 0;j--) {
    if(arr[i][j] !== elem) {
        newArr.push(arr[i]);
     }
   }
 }
 // change code above this line
  return newArr;
}

console.log(filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2));

我想要的结果是["flutes", 4] 抱歉,如果有人问过这个问题,我一直在通过谷歌寻找答案,但找不到。

感谢帮助

最佳答案

你快到了!

您正在检查数组中的每个值。即:2 !== "trumpets" 2 !== 2。因此,所有数组都被压入,因为所有数组都有一个永远不会匹配的字符串值。

删除第二个循环并显式检查内部数组的第二个值:

function filteredArray(arr, elem) {
let newArr = [];
// change code below this line
for(let i = arr.length -1; i >= 0 ; i--) {
    if(arr[i][1] !== elem) {
        newArr.push(arr[i]);
     }
 }
 // change code above this line
  return newArr;
}

console.log(filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2));

上面的代码片段显示了您当前方法中的错误,但没有提供非常可重用的功能。如果您想检查一个数组是否包含一个值,最简单的方法是回退到一些内置的数组方法:

function filteredArray(arr, elem) {
  return arr.filter(values => !values.includes(elem));
}

console.log(filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2));

console.log(filteredArray([ ["amy", "beth", "sam"], ["dave", "sean", "peter"] ], "peter"));

关于javascript - 需要帮助数组 for 循环 If else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52165828/

相关文章:

javascript - 如何用jQuery解析多个json?

javascript - 让 javascript 点击工作

javascript - 如何在此脚本中从 JSON 数组加载图像?

python - 如何并行化复杂的 for 循环

javascript - jquery 功能检测 - 我怎样才能实现这个?

javascript - 如何使用 NodeJS 将 UTC 日期格式化为 `YYYY-MM-DD hh:mm:ss` 字符串?

javascript - 添加 HTML 按钮来处理循环数组中元素的增量

c++ - 无符号字符数组长度

javascript - 使用javascript检查多个字符串是否相互包含

python - 从 Python 到 R 的翻译。执行时间差异很大