【问题标题】:Compare two arrays and create two new arrays with missing and new elements using pure javascript or jquery使用纯 javascript 或 jquery 比较两个数组并创建两个包含缺失元素和新元素的新数组
【发布时间】:2017-09-11 03:45:58
【问题描述】:

如何比较两个 javascript 数组并创建两个包含缺失元素和新元素的新数组?数组元素将始终是字符串或数字,并且不能 100% 确定它们会以任何方式排序。

var array1= ['11', '13', '14', '18', '22', '23', '25'];
var array2= ['11', '13', '15', '16', '17', '23', '25', '31'];
var missing_elements = [];
var new_elements = [];

***Required Output:***
missing_elements= ['14', '18', '22']
new_elements= ['15', '16', '17', '31']

【问题讨论】:

标签: javascript jquery arrays compare


【解决方案1】:

一个简单的解决方案就是迭代array1,使用.includes() 一次测试一个元素以生成缺失元素的列表,然后执行相反的操作以获取新元素的列表。

您可以使用.filter()arrow functions 来保持简短:

var array1= ['11', '13', '14', '18', '22', '23', '25'];
var array2= ['11', '13', '15', '16', '17', '23', '25', '31'];

var missing_elements = array1.filter(v => !array2.includes(v));
var new_elements = array2.filter(v => !array1.includes(v));

console.log(missing_elements);
console.log(new_elements);

【讨论】:

  • 效果很好。但是如果array2有重复值,那么如何删除重复值呢?例如:var array2= ['11', '13', '15', '16', '17', '23', '25', '31','17','11'];
  • 从数组中删除重复项包含在其他问题中,包括this excellent answer 的问题。您可以将其中一种技术与我展示的技术结合起来,或者在之前或之后单独使用.filter()
猜你喜欢
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多