我试图比较两个包含相似字符串的不同数组的结果;
数组1:
A350.1 - 2h 46 m
A210.2 - 3h 46 m
ARRAY2:
A450.3 - 8h 0 m
A440.5 - 13h 0 m
A450.1 - 4h 0 m
A350.1 - 1h 45 m
A320.7 - 3h 45 m
所以我需要从 Array1 过滤掉A350.1 - 2h 46 m
,因为 Array2
A350.1 - 1h 45 m
结果应该从过滤后的数组看起来像这样,只删除名称相同的对象(在本例中为A350.1
):
A210.2 - 3h 46 m
我能有效地做到这一点,并将结果推送到新的过滤数组中吗?
答案 0 :(得分:2)
试试这个:
var arr1 = ["A350.1 - 2h 46 m", "A210.2 - 3h 46 m"]
var arr2 = ["A450.3 - 8h 0 m",
"A440.5 - 13h 0 m",
"A450.1 - 4h 0 m",
"A350.1 - 1h 45 m",
"A320.7 - 3h 45 m"
]
var firstPart = [];
arr1.forEach(function(obj1) {
firstPart.push(obj1.substring(0, obj1.indexOf('-')))
});
arr2.forEach(function(obj2) {
var i = firstPart.indexOf(obj2.substring(0, obj2.indexOf('-')));
if (i !== -1)
arr1.splice(i, 1);
});
console.log(arr1)

答案 1 :(得分:0)
创建一个循环,将Array1的每个值与Array2的每个值进行比较,并将您的字符串拆分为array1[i].split("-");
,只比较字符串的第一部分
答案 2 :(得分:0)
通过拆分有趣的位
来准备查找数组var arr2_prepared = arr2.map(x => x.split(' - ')[0]);
然后从数据数组中过滤掉在查找数组中没有字符串第一部分的元素
var result = arr1.filter(x => arr2_prepared.indexOf(x.split(' - ')[0]) === -1);