两个数组之间的打字稿差异

Gal*_*a88 18 arrays typescript difference

有没有办法在TypeScrpit中从list_b返回list_a的缺失值?

例如:

var a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var a2 = ['a', 'b', 'c', 'd', 'z'];
Run Code Online (Sandbox Code Playgroud)

结果值是

['e', 'f', 'g'].
Run Code Online (Sandbox Code Playgroud)

提前致谢

Nit*_*mer 41

可能有很多方法,例如使用Array.prototype.filter():

var a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var a2 = ['a', 'b', 'c', 'd'];

let missing = a1.filter(item => a2.indexOf(item) < 0);
console.log(missing); // ["e", "f", "g"]
Run Code Online (Sandbox Code Playgroud)

(游乐场代码)


编辑

filter函数运行在元素上a1,并将它(但在一个新数组中)减少到a1(因为我们迭代它的元素)并且缺少的元素中a2.

a2缺少的元素a1将不包含在结果数组(missing)中,因为过滤器函数不会迭代a2元素:

var a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var a2 = ['a', 'b', 'c', 'd', 'z', 'hey', 'there'];

let missing = a1.filter(item => a2.indexOf(item) < 0);
console.log(missing); // still ["e", "f", "g"]
Run Code Online (Sandbox Code Playgroud)

(游乐场代码)


Ros*_*ott 12

Typescript只提供设计/编译时的帮助,它不添加JavaScript功能.因此,适用于JavaScript的解决方案将适用于Typescript.

有很多方法可以解决这个问题,我的选择将是lodash:https://lodash.com/docs#difference

_.difference(['a', 'b', 'c', 'd', 'e', 'f', 'g'],['a', 'b', 'c', 'd']);
Run Code Online (Sandbox Code Playgroud)


Fis*_*man 11

你只能使用这个方法。首先是较大的桌子。

const a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
const a2 = ['a', 'b', 'c', 'd', 'x', 'y', 'z'];

const difference_a1 = a1.filter(x => !a2.includes(x));

const difference_a2 = a2.filter(x => !a1.includes(x));

console.log(difference_a1);
/* ["e","f","g"] */

 console.log(difference_a2);
/* ["x","y","z"] */
Run Code Online (Sandbox Code Playgroud)