比较2个数组,打印共同点并标记不存在的数组

时间:2017-09-16 04:11:18

标签: javascript arrays

我在这里有一个问题的例子。拿2个阵列,1代表我已下载的电影,1代表尚未下载的电影。我想要打印一个新的阵列,基本上是'未下载的电影'阵列,但在我没有下载的视频上标有“未下载”的标志。

有时候视频实际上是不同的,但名称相同。

这是小提琴:

https://jsfiddle.net/ykhch9ng/

var websiteVidsArr = ['vid1.wmv', 'vid1.wmv', 'vid2.wmv', 'vid3.wmv', 'vid4.wmv'];
var downloadedVidsArr = ['vid1.wmv', 'vid2.wmv', 'vid3.wmv'];
var nonDownloadedVidsArr = [];

for (var i = 0; i < websiteVidsArr.length; i++) {

    if (downloadedVidsArr[i] === websiteVidsArr[i]) {
      nonDownloadedVidsArr[i] = websiteVidsArr[i];
    } else {
    nonDownloadedVidsArr[i] = websiteVidsArr[i] + ' NOT DOWNLOADED';
    }
}

console.log(nonDownloadedVidsArr);
//preferred output:
//["vid1.wmv", "vid1.wmv NOT DOWNLOADED", "vid2.wmv", "vid3.wmv", "vid4.wmv NOT DOWNLOADED"] 

2 个答案:

答案 0 :(得分:1)

此解决方案应该有效。

</html>

答案 1 :(得分:-1)

正如塔德曼指出你可以做到这一点lodash

  1. 获取两个_.diff之间的差异,然后追加NOT DOWNLOADED _.map
  2. 找到downloadedVidsArrwebsiteVidsArr共有_.intersection项。
  3. 将它们放在一起_.union
  4. 以下代码:

    var websiteVidsArr = ['vid1.wmv', 'vid1.wmv', 'vid2.wmv', 'vid3.wmv', 'vid4.wmv'];
    var downloadedVidsArr = ['vid1.wmv', 'vid2.wmv', 'vid3.wmv'];
    var diff = _.chain(websiteVidsArr).difference(downloadedVidsArr).map(vid => `${vid}  NOT DOWNLOADED`).value();
    var result = _.chain(websiteVidsArr).intersection(downloadedVidsArr).union(diff).value();