[英]Is it possible to take out a word with regular expressions using the filter method in javascript?
[英]JavaScript - Filter out two arrays and take out dupes
假设我有两个数组:
var sellersDatabase = [
{ name: 'Mark', start_date: '2017-06-27' },
{ name: 'Jane', start_date: '2017-06-27' }
];
var sellersAPICall = [
{ name: 'Mark', start_date: '2017-06-27' },
{ name: 'Joe', start_date: '2017-06-22' },
{ name: 'Steven', start_date: '2017-04-11' },
{ name: 'Jane', start_date: '2017-06-27' }
];
使用ES6或Lodash,如何获得未包含在第一个数组中的那些数组的差异? 是的,我已经尝试过lodash的difference()
。
因此,我的预期输出将是:
var toInsertIntoDB = [
{ name: 'Joe', start_date: '2017-06-22' },
{ name: 'Steven', start_date: '2017-04-11' }
];
这样做:
javascript const toInsertToDB = _.difference(sellersDatabase, sellersAPICall); console.log(toInsertToDB);
输出:
[{ "name": "Mark", "start_date": "2017-06-27" }, { "name": "Jane", "start_date": "2017-06-27" }]
(当我想要相反的时候)
由于您要比较的是对象数组而不是原始类型,因此请使用_.differenceBy()
,并指出应通过哪个属性比较对象。 此外, sellersAPICall
数组应为第一个(引用数组)。
var sellersDatabase = [ { name: 'Mark', start_date: '2017-06-27' }, { name: 'Jane', start_date: '2017-06-27' } ]; var sellersAPICall = [ { name: 'Mark', start_date: '2017-06-27' }, { name: 'Joe', start_date: '2017-06-22' }, { name: 'Steven', start_date: '2017-04-11' }, { name: 'Jane', start_date: '2017-06-27' } ]; var result = _.differenceBy(sellersAPICall, sellersDatabase, 'name'); console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
如果要比较2个属性,则可以使用将两个值连接在一起的回调函数:
var sellersDatabase = [ { name: 'Mark', start_date: '2017-06-27' }, { name: 'Jane', start_date: '2017-06-27' } ]; var sellersAPICall = [ { name: 'Mark', start_date: '2017-06-27' }, { name: 'Joe', start_date: '2017-06-22' }, { name: 'Steven', start_date: '2017-04-11' }, { name: 'Jane', start_date: '2017-06-27' } ]; var result = _.differenceBy(sellersAPICall, sellersDatabase, function(o) { return o.name + '-' + o.start_date; }); console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.