gpt4 book ai didi

javascript - 我如何检查一个对象是否在我的数组中?

转载 作者:行者123 更新时间:2023-11-29 10:55:53 25 4
gpt4 key购买 nike

我正在开发一个年度工作许可计算器。我必须检测法定节假日。所以我在数组中添加了所有法定节假日。如果日期等于其他数组,它应该返回 true。但是代码说下面的这两个对象不相等。我不知道为什么。

var legalHolidays = [[1, 1, 2019], [23, 4, 2019], [1, 5, 2019], [19, 5, 2019], [3, 6, 2019]]

var otherArray = [1, 1, 2019]

if (legalHolidays[0] == otherArray) {console.log(true)}else{console.log(false)}

我希望 false 的输出为 true。

最佳答案

But the code says these two objects below are not equal. I couldn't figured out why.

它们不相等,因为它们是不同数组的实例恰好具有相同的值。为了绕过这一点,您可以做的一件事是将数组转换为 json 字符串并进行比较:

var legalHolidays = [[1, 1, 2019], [23, 4, 2019], [1, 5, 2019], [19, 5, 2019], [3, 6, 2019]];

var otherArray = [1, 1, 2019];

// the date arrays are converted to JSON strings. This enables the arrays
// to be compared by their respective string representations, avoiding
// the problem of having to deal with the different references
const match = legalHolidays.find(holiday => JSON.stringify(holiday) === JSON.stringify(otherArray));

console.log(`Is found: ${!!match}`);

注意:

将数组转换为 Json 字符串并不是比较它们的唯一方法。从本质上讲,您需要将问题简化为比较基元(按值比较,而不是像在对象情况下那样按引用进行比较)。

关于javascript - 我如何检查一个对象是否在我的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417746/

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