gpt4 book ai didi

javascript - 在 JavaScript 中比较数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:48 25 4
gpt4 key购买 nike

我正在尝试找出一种在 JavaScript 中比较数组的方法,特别是在 node.js 中。

我有 2 个数组:

到达1:

[16,31,34,22,64,57,24,74,7,39,72,6,42,41,40,30,10,55,23,32,11,37,4,3,2,52,1,17,50,56,60,65,48,43,58,28,36,47,69,27,8,59,70,26,62,54,53,5,19,73]

到达2

[12,11,9,14,7]

这个想法是检查 Arr2 中的值是否存在于 Arr1 中,如果存在,则返回 true;有什么想法吗?

最佳答案

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

Arr2.every( function( element ){ return Arr1.indexOf( element ) > - 1 })

编辑 2019:ES6 和 Array.prototype.includes

Arr2.every( elm => Arr1.includes( elm ) )

在评论中 @Pablo 指出,如果数组包含对象,这将不起作用。这并不完全正确,让我解释一下。

const ob1 = { foo: 1 }
const ob2 = { bar: 2 }
const ob3 = { baz: 3 }

const Arr1 = [ ob1, ob2, ob3 ];
const Arr2 = [ ob1, ob3 ];

Arr2.every( elm => Arr1.includes( elm ) ); // true, the same objects

const Arr3 = [ { foo: 1 }, { bar: 2 }, { baz: 3 } ]
const Arr4 = [ { foo: 1 }, { baz: 3 } ]

Arr4.every( elm => Arr3.includes( elm ) ); // false, distinct objects of the same "shape"

对于 JS 开发人员来说,以上两点都不应该感到意外,我想说这是预期的结果。如果您想通过对象的键和值来比较对象的相同性,那么您可以首先将它们映射到 JSON 字符串:

const Arr3json = Arr3.map( elm => JSON.stringify( elm ) );
const Arr4json = Arr4.map( elm => JSON.stringify( elm ) );

Arr4json.every( elm => Arr3json.includes( elm ) ); // true, comparing string representations of distinct objects

关于javascript - 在 JavaScript 中比较数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com