JavaScript - 使用类似对象过滤两个数组

时间:2017-05-09 10:24:07

标签: javascript arrays compare

我试图比较两个包含相似字符串的不同数组的结果;

数组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

我能有效地做到这一点,并将结果推送到新的过滤数组中吗?

3 个答案:

答案 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);