非常感谢您在这方面提供的所有帮助。
我有两个数组:
- 第一个数组包含没有扩展名的文件名
- 第二个数组包含具有扩展名 的文件名。
我需要输出第三个数组,在本例中为 FinalArray
,其中包含不在 ArrayFileName
中的所有 ArrayFileNameWExt
的列表大批。
我知道我有一个关于寻找匹配项目的话题,这很棒。但我在查找不匹配的项目时遇到问题。我将 == 比较更改为 !==,这给了我一个文件名一百次。
感谢你在这方面的帮助,Maxine
var ArrayFileName = ['one', 'two', 'three', 'three', 'five', 'six', 'ten'];
var ArrayFileNameWExt = ['one.txt', 'two.txt', 'three.txt', 'ten.wmf', 'eleven.cgm'];
var FinalArray = [];
for (var i = 0; i < ArrayFileName.length; i++) {
for (var j = 0; j < ArrayFileNameWExt.length; j++) {
var temp = ArrayFileNameWExt[j].split(".");
if(ArrayFileName[i]!==temp[0]){
FinalArray.push(ArrayFileNameWExt[j]);
break;
}
}
}
最佳答案
您可以使用一个简单的过滤器并返回拆分的第一部分不在 ArrayFileName
数组中的所有项目。
var ArrayFileName = ['one', 'two', 'three', 'three', 'five', 'six', 'ten'];
var ArrayFileNameWExt = ['one.txt', 'two.txt', 'three.txt', 'ten.wmf', 'eleven.cgm'];
var final = ArrayFileNameWExt.filter(function(item) {
return !ArrayFileName.includes(item.split('.')[0]);
})
console.log(final);
如果您使用的是相当旧的 javascript 版本,includes
数组方法可能不存在。可以改用以下代码。
var ArrayFileName = ['one', 'two', 'three', 'three', 'five', 'six', 'ten'];
var ArrayFileNameWExt = ['one.txt', 'two.txt', 'three.txt', 'ten.wmf', 'eleven.cgm'];
var final = ArrayFileNameWExt.filter(function(item) {
var name = item.split('.')[0];
for (var i = 0; i < ArrayFileName.length; i++) {
if (ArrayFileName[i] === name) return false;
}
return true;
})
console.log(final);
关于Javascript比较两个数组并获取不匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54241674/