【问题标题】:comparing two arrays before adding an item from one array to another in JavaScript [closed]在JavaScript中将一个项目从一个数组添加到另一个数组之前比较两个数组[关闭]
【发布时间】:2016-08-06 14:46:49
【问题描述】:

我有两个数组。

var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"];
var addTo = ["pear", "tangerine", "grape", "orange", "blueberry"];

我想检查“addFrom”数组中的第一项是否已经在“addTo”数组中。

如果“addTo”数组没有“addFrom”数组中的第一项,我想将该项推送到“addTo”数组中。

但是,如果“addFrom”数组中的第一项已经在“addTo”数组中,我想继续到“addFrom”数组中的第二项并执行相同的操作,直到找到该项在“addFrom”数组中,而不是在“addTo”数组中,然后将其推送到“addTo”数组中。我只想向“addTo”数组添加一项。

因此,我希望“addTo”数组看起来像这样:

var addTo = ["pear", "tangerine", "grape", "orange", "blueberry", "banana"];

如何在 JavaScript 中做到这一点?

【问题讨论】:

  • 请添加想要的结果。

标签: javascript arrays


【解决方案1】:

你可以使用 forEach

var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"];
var addTo = ["pear", "tangerine", "grape", "orange", "blueberry"];
var inserted = false;

    addFrom.forEach(function(v,i){
        if(inserted)
           return;

        if(addTo.indexOf(v)<0)
        {
            addTo.push(v);
            inserted = true;
        }
    })

【讨论】:

  • 来自问题:“我只想向“addTo”数组添加一项”。此代码将从addFrom 推送所有缺失的元素
  • 对不起,我的错我编辑了答案
【解决方案2】:
var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"];
var addTo = ["pear", "tangerine", "grape", "orange", "blueberry"];

for(var i = 0; i < addFrom.length; i++){   
    if(addTo.indexOf(addFrom[i]) === -1 ){
        addTo.push(addFrom[i]); 
        break; 
    }    
}

【讨论】:

    【解决方案3】:

    简单易懂

    for (index = 0; index < addFrom.length; ++index) {
      if (addTo.indexOf(addFrom[index]) === -1){
          addTo.push(addFrom[index]);
          break;
      }
    }
    

    【讨论】:

    • 确保你var你的循环变量。
    【解决方案4】:

    一个简单的循环似乎是最好的方法(我用过while)。

    var i = -1, len = addFrom.length;
    while (++i < len) {
      if (addTo.indexOf(addFrom[i]) === -1) {
        addTo.push(addFrom[i]);
        break;
      }
    }
    

    DEMO

    【讨论】:

      【解决方案5】:

      https://jsfiddle.net/povvx8hg/

      var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"];
      var addTo = ["pear", "tangerine", "grape", "orange", "blueberry"];
      
      for (i = 0; i < addFrom.length; i++) {
          if(addTo.indexOf(addFrom[i]) != -1) {
          console.log("Exist");
        } else {
          addTo.push(addFrom[i]);
        }
      }
      
      console.log(addTo);
      

      【讨论】:

      • 检查控制台浏览器!
      • 第一次推送后忘记跳出循环
      【解决方案6】:

      如果addTo 数组中没有一项,您可以使用Array#some() 并停止迭代。

      var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"],
          addTo = ["pear", "tangerine", "grape", "orange", "blueberry"];
      
      addFrom.some(function (a) {
          if (!~addTo.indexOf(a)) {
              addTo.push(a);
              return true;
          }
      });
      
      document.write('<pre> ' + JSON.stringify(addTo, 0, 4) + '</pre>');

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-10
        • 2019-01-14
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多