我在这里有一个问题的例子。拿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"]
答案 0 :(得分:1)
此解决方案应该有效。
</html>
答案 1 :(得分:-1)
正如塔德曼指出你可以做到这一点lodash
_.diff
之间的差异,然后追加NOT DOWNLOADED
_.map
。downloadedVidsArr
和websiteVidsArr
共有_.intersection
项。_.union
以下代码:
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();