Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 嵌套数组未返回正确的数据_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript 嵌套数组未返回正确的数据

Javascript 嵌套数组未返回正确的数据,javascript,arrays,sorting,Javascript,Arrays,Sorting,我正在尝试嵌套数组,你能帮我循环吗,代码没有优化,我需要一些指导。 我有2个数组,没有得到预期的结果 let arr1 = ['a','b','c','d','e']; let arr2 = ['b','e','f']; var temp = arr2 for(i =0; i< arr1.length; i++){ for(j=0; j<arr2.length; j++){ var flag = false; if(arr1[i] === arr2

我正在尝试嵌套数组,你能帮我循环吗,代码没有优化,我需要一些指导。 我有2个数组,没有得到预期的结果

let arr1 = ['a','b','c','d','e'];
let arr2 = ['b','e','f'];
var temp = arr2
  for(i =0; i< arr1.length; i++){
    for(j=0; j<arr2.length; j++){
      var flag = false;
      if(arr1[i] === arr2[j]){
        flag = true;
      }
      if(arr2.length -1 === j){
        if(flag == false){
          temp.push(arr1[i])
        }
        if( arr1.length - 1 == i){
              console.log(temp)
        }
      }
    }
  }
arr1中不存在的元件应推送到arr2元件。
我为初学者的代码道歉。我还在学习。谢谢。

如果使用array.forEach和array.includes方法,解决方案将很简单

  • 然后在arr1上循环并检查该元素是否不在arr2中,然后再推动它
  • 让arr1=['a','b','c','d','e'];
    设arr2=['b','e','f'];
    arr1.forEach(obj=>{
    如果(!arr2.包括(obj))
    arr2.推力(obj);
    })
    console.log(arr2)
    让arr1=[“a”、“b”、“c”、“d”、“e”];
    设arr2=[“b”,“e”,“f”];
    //方法1,使用“reduce”和“includes”`
    常量输出1=arr1.reduce(
    (acc,cur)=>(!acc.包括(cur)和acc.推送(cur),acc),
    arr2
    );
    //方法2,使用'reduce'和building对象来处理重复项。这将使查找变得容易
    const output2=Object.keys(
    concat(arr1).reduce((acc,cur)=>Object.assign(acc,{[cur]:1}),{})
    );
    控制台日志(output1);
    
    控制台日志(output2)
    temp
    是指向
    arr2
    的指针,因此对
    temp
    的更改就是对
    arr2
    的更改。为了避免这种情况,请使用:
    temp=arr2.slice()
    ,它将生成一个副本。@iAmOren噢,谢谢你的解释,我想知道为什么我在输出(temp)中得到了重复的结果
    temp = ['b','e','f','a','c','d']