首页 > 解决方案 > 我们如何通过存储在 JavaScript 中两个对象数组中的值来比较对象?

问题描述

我有一组对象,其中包含我的多选下拉菜单

const menu = [
    {
        label: "test 1",
        value: "test1",
    },
    {
        label: "test 2",
        value: "test2",
    },
    // so on
]

我有另一个对象数组,它存储从菜单中选择的多个值:

const values = [
    {
        label: "test 1",
        value: "test1",
    }
    // It can contain more than one values since the dropdown is multiselect
]

请记住,菜单数组包含我在下拉列表中显示的所有选项。现在,我想要的是从下拉列表中过滤掉选定的值。为此,我需要从对象的菜单数组中过滤掉信息,为了过滤,我将使用对象的值数组,以便可以比较两个数组中的对象并从我的菜单对象数组中过滤掉。

我尝试了许多 JS 方法,但在我的情况下没有任何效果。我不能使用包含方法,因为它通过引用而不是值来比较值。这就是我的条件失败的原因,因为 JS 认为这两个对象是不同的(它们的地址不同),尽管它们具有相同的值。

期待解决方案。

标签: javascriptarraysreactjs

解决方案


selectedValues = values.map(item => item.value)
menu.filter(item => selectedValues.includes(item.value))

推荐阅读