Javascript 在单独的数组中显示两个数组的相同元素

Javascript 在单独的数组中显示两个数组的相同元素,javascript,arrays,Javascript,Arrays,我对JavaScript还很陌生。我试图实现的是将两个数组中所有相同的元素放到另一个数组中,然后删除原来两个数组中的元素 但是,单独的数组并没有显示所有相同的元素。另外,两个数组仍然显示一些相同的元素。不知道我哪里出错了 以下代码可能有语法错误。我不得不修改它,使它更容易问 var finalSelective = ["CS348", "CS353", "CS381", "CS422", "CS448", "CS490-ES0", "CS490-DSO"]; var finalSEelectiv

我对JavaScript还很陌生。我试图实现的是将两个数组中所有相同的元素放到另一个数组中,然后删除原来两个数组中的元素

但是,单独的数组并没有显示所有相同的元素。另外,两个数组仍然显示一些相同的元素。不知道我哪里出错了

以下代码可能有语法错误。我不得不修改它,使它更容易问

var finalSelective = ["CS348", "CS353", "CS381", "CS422", "CS448", "CS490-ES0", "CS490-DSO"];
var finalSEelective = ["CS348", "CS352", "CS353", "CS354", "CS381", "CS422", "CS448", "CS456", "CS473", "CS490-DSO", "CS490-ES0"];
var SEelecSelec = []; //fulfills SE elective and S elective.
for (var i = 0; i < finalSelective.length; i++) { //There is something wrong with this one.
  for (var j = 0; j < finalSEelective.length;j++){ //It does not show the correct repeats.
    if (finalSelective[i] == finalSEelective[j]) {
      SEelecSelec.push(finalSEelective[j]);
      var x = finalSelective.indexOf(finalSelective[i]);
      if (x != -1) {
        finalSelective.splice(x,1);
      }
      x = finalSEelective.indexOf(finalSEelective[j]);
      if (x != -1) {
        finalSEelective.splice(x,1);
      }
    }
  }
}
var finalSelective=[“CS348”、“CS353”、“CS381”、“CS422”、“CS448”、“CS490-ES0”、“CS490-DSO”];
var FinalSelection=[“CS348”、“CS352”、“CS353”、“CS354”、“CS381”、“CS422”、“CS448”、“CS456”、“CS473”、“CS490-DSO”、“CS490-ES0”];
var SEelecSelec=[]//完成SE选修课和S选修课。
对于(var i=0;i
这里是另一个潜在的解决方案:

编辑:根据下面的注释,获得实际所需输出的代码是:

for (var i = 0; i < a.length; i++) {
  var indexInB = b.indexOf(a[i]);
  if (indexInB > -1){
    output.push(a[i]);
    a.splice(i, 1);
    b.splice(indexInB, 1);
    i--;
  }
}
for(变量i=0;i-1){
push(a[i]);
a、 拼接(i,1);
b、 拼接(indexInB,1);
我--;
}
}

这里是另一种可能的解决方案。公共值被推送到一个单独的数组中,并从初始数组中删除

var finalSelective = ["CS348", "CS353", "CS381", "CS422", "CS448", "CS490-ES0", "CS490-DSO"],
finalSEelective = ["CS348", "CS352", "CS353", "CS354", "CS381", "CS422", "CS448", "CS456", "CS473", "CS490-DSO", "CS490-ES0"],
SEelecSelec = [],
el, index;

for (var i = 0, len = finalSelective.length; i < len; i++) {
    el = finalSelective[i];

    index = finalSEelective.indexOf(el);

    if (index > -1) {
        SEelecSelec.push(el);
        finalSEelective.splice(index, 1);
        finalSelective.splice(i, 1);
    }
}

console.log(finalSelective, finalSEelective, SEelecSelec);
var finalSelective=[“CS348”、“CS353”、“CS381”、“CS422”、“CS448”、“CS490-ES0”、“CS490-DSO”],
最终选择=[“CS348”、“CS352”、“CS353”、“CS354”、“CS381”、“CS422”、“CS448”、“CS456”、“CS473”、“CS490-DSO”、“CS490-ES0”],
SEelecSelec=[],
el,指数;
对于(变量i=0,len=finalSelective.length;i-1){
参见勒克塞莱推(el);
最终选择。拼接(索引1);
最终选择拼接(i,1);
}
}
log(finalSelective,finalSelective,SEelecSelec);

Plunker

我想你想要javascript中的
===
,而不是
=
@leigero通常使用
===
更好,但在这种情况下,这并不重要。我可能误解了你的代码,但我需要的输出是:c=[CS348,CS353,CS381,CS422,CS448,CS490-ES0,CS490-DSO]a=[]和b=[CS352、CS354、CS456、CS473]忽略第一条注释。编辑它已经太晚了。我正在尝试提取数组a和b中相同的元素。然后把它们放在c。提取的元素必须从a和b中删除。好的,我添加了该代码,下次如果您在问题中包含所需的输出,那将非常有用!谢谢这正是我要找的。这是一个很好的解决办法。非常感谢你。是的,下次我提问时会更具体一些。finalSelective=[“CS353”、“CS422”、“CS490-ES0”]finalSelective=[“CS352”、“CS353”、“CS354”、“CS422”、“CS456”、“CS473”、“CS490-ES0”]见Lecselec=[“CS348”、“CS381”、“CS448”、“CS490-DSO”]。这就是输出显示的内容。但这不是我需要的。我需要删除finalSelective和finalSelective中相同的元素。因此理想情况下,finalSelective应该为空。finalSElective应具有CS352、CS354、CS456和CS473
var finalSelective = ["CS348", "CS353", "CS381", "CS422", "CS448", "CS490-ES0", "CS490-DSO"],
finalSEelective = ["CS348", "CS352", "CS353", "CS354", "CS381", "CS422", "CS448", "CS456", "CS473", "CS490-DSO", "CS490-ES0"],
SEelecSelec = [],
el, index;

for (var i = 0, len = finalSelective.length; i < len; i++) {
    el = finalSelective[i];

    index = finalSEelective.indexOf(el);

    if (index > -1) {
        SEelecSelec.push(el);
        finalSEelective.splice(index, 1);
        finalSelective.splice(i, 1);
    }
}

console.log(finalSelective, finalSEelective, SEelecSelec);