Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的if状况有什么问题_Javascript_Arrays_Function - Fatal编程技术网

Javascript 我的if状况有什么问题

Javascript 我的if状况有什么问题,javascript,arrays,function,Javascript,Arrays,Function,我在这个网站上找到了这个问题的答案,但我只是想了解为什么我的解决方案不起作用。这个问题要求实现一个差分函数,它从一个列表中减去另一个列表 它应该从列表a中删除列表b中存在的所有值 我的原始代码: function array_diff(array,num) { var results = []; array.forEach(function(ele, idx, array){ if (num !== ele) { results.push(ele) co

我在这个网站上找到了这个问题的答案,但我只是想了解为什么我的解决方案不起作用。这个问题要求实现一个差分函数,它从一个列表中减去另一个列表

它应该从列表a中删除列表b中存在的所有值

我的原始代码:

function array_diff(array,num) {
  var results = [];

  array.forEach(function(ele, idx, array){
    if (num !== ele) {
      results.push(ele)
      console.log("a is now " + ele)
      console.log("b is " + num)
    } 
  })
  return results;
} 

但是每次我给它输入这个参数array_diff([1,2,2],[2]),它都会返回原始数组,我不知道为什么你会将它与数组(num)进行比较,数组(num)总是返回false,因为你的ele是一个整数

用这个代替

array_diff([1,2,2], 2)
或者如果你想改变功能

function array_diff(array,num) {
  var results = [];

  array.forEach(function(ele, idx, array){
    if (num.indexOf(ele) === -1) {
      results.push(ele)
      console.log("a is now " + ele)
      console.log("b is " + num)
    } 
  })
  return results;
} 

您正在为
num
使用数组,而不是数字

array_diff([1, 2, 2], 2)
//                    ^
函数数组_diff(数组,num){
var结果=[];
forEach(函数(ele、idx、array){
如果(num!==ele){
结果:推挤(ele);
log(“a现在是”+ele);
console.log(“b是”+num);
} 
});
返回结果;
} 

log(数组_diff([1,2,2,2])您的比较是错误的,您应该写:

if(num != ele)
而不是

if(num !== ele)

哦,这甚至适用于数组作为num,你能解释区别吗?!==比较类型和值!=只有compare valueOP尝试实现差异函数;参数仍然应该是数组。请查看下划线或Lodash的来源
\uu0.difference