需要帮助数组进行循环If else语句

时间:2018-09-04 11:58:04

标签: javascript arrays for-loop

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

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] 抱歉,如果这是别人问的,我一直在通过Google寻找答案,但找不到。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

你快到了!

您正在检查数组中的每个值。即: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"));

答案 1 :(得分:0)

julia> struct A
       x::Int
       end

julia> a = A(3)
A(3)

julia> a.x = 4
ERROR: type A is immutable
Stacktrace:
 [1] setproperty!(::A, ::Symbol, ::Int64) at .\sysimg.jl:19
 [2] top-level scope at none:0

此代码段会将输入数组中与给定第二个参数不匹配的第一项返回给该函数。如果我们需要所有不匹配的项目,请将function filteredArray(arr, elem) { var resultArray = arr.filter(function(item) { return item.indexOf(elem) == -1; }); return resultArray[0] } console.log( filteredArray([["trumpets", 2], ["flutes", 4], ["saxophones", 2]], 2) ); console.log( filteredArray([ ["amy", "beth", "sam"], ["dave", "sean", "peter"] ], "peter") );替换为return resultArray[0]

考虑使用以下参数调用此函数的情况,

return resultArray

filteredArray([["trumpets", 2], ["flutes", 4], ["saxophones", 5]], 2)将给出return resultArray[0]

如果我们需要所有不匹配的商品,我们可以做

["flutes", 4]将给出return resultArray