[英]Check if all arrays in an object are equal to all arrays in another object
所以我有一个这样的数据结构:
formSubmissions: [
{
ids: [1,2,3,4,5],
genders: ["male", "female"],
times: ["1day","3days"]
},
...
]
基本上,每次提交表单时,我想检查从表单中的三个字段创建的 object 是否等于 formSubmissions 数组中的任何内容。 如果没有,我想把它 append 放到数组中。
最快的方法是什么? 我尝试了其他一些堆栈溢出解决方案无济于事。
谢谢!
如果您在 Nodejs 上,并且您只需要按内容比较对象, util.isDeepStrictEqual()
会很有用:
if (!this.formData.some(elem => util.isDeepStrictEqual(elem, submitted))) {
this.formData.push(submitted);
}
但请注意,如果它们的顺序不同,不同对象中的数组值将不匹配。
这是我在等待回复时想到的:
if (!(this.formData.some(el => el.voIds === submitted.voIds &&
el.genderList === submitted.genderList &&
el.times === submitted.times))) {
this.formData.push(submitted);
}
它似乎工作。 关于如何改进它的任何建议?
另一种解决方案,根据How to do a deep comparison between 2 objects with lodash?中接受的答案使用 Lodash _.isEqual() ?
if (!this.formData.some(elem => _.isEqual(elem, submitted))) {
this.formData.push(submitted);
}
请注意,与其他 Lodash 实用程序一样,它可以作为独立的 NPM package 使用,因此您不必依赖库的 rest。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.