Javascript 检查一个对象中的所有数组是否等于另一个对象中的所有数组

Javascript 检查一个对象中的所有数组是否等于另一个对象中的所有数组,javascript,arrays,data-structures,Javascript,Arrays,Data Structures,所以我有这样一个数据结构: formSubmissions: [ { ids: [1,2,3,4,5], genders: ["male", "female"], times: ["1day","3days"] }, ... ] 基本上,每次提交表单时,我都要检查从表单中的三个字段创建的对象是否等于formSubmissions数组中的任何内容。如果不是,我想将其附加到数组中 实现这一目标的最快方法是什么?我已经尝试了一些

所以我有这样一个数据结构:

formSubmissions: [
    {
        ids: [1,2,3,4,5],
        genders: ["male", "female"],
        times: ["1day","3days"]
    },
    ...
]
基本上,每次提交表单时,我都要检查从表单中的三个字段创建的对象是否等于formSubmissions数组中的任何内容。如果不是,我想将其附加到数组中

实现这一目标的最快方法是什么?我已经尝试了一些其他的堆栈溢出解决方案,但没有效果


谢谢

下面是我在等待回复时想到的:

if (!(this.formData.some(el => el.voIds === submitted.voIds && 
                               el.genderList === submitted.genderList && 
                               el.times === submitted.times))) {
        this.formData.push(submitted);
      }

它似乎起作用了。关于如何改进,有什么建议吗?

另一种解决方案,根据中接受的答案使用Lodash

if(!this.formData.some(elem=>..isEqual(elem,submitted))){
此.formData.push(已提交);
}

请注意,与其他Lodash实用程序一样,它作为一个独立的NPM包提供,因此您不必依赖于库的其余部分。

如果您在NodeJ上,只需按对象的内容比较对象,
util.isDeepStreetQual()
可能很有用:

if(!this.formData.some(elem=>util.isdeepstrimequal(elem,submitted))){
此.formData.push(已提交);
}

但是请注意,如果不同对象的顺序不同,那么它们的数组值将不匹配。

即使它起作用,如果对象的结构发生变化,看起来也很难维护,这就是为什么我建议为此使用函数。你完全正确。如果我希望它会改变,我会转向你的解决方案。但在目前,我认为它不会改变。