javascript - 我们如何通过存储在 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 认为这两个对象是不同的(它们的地址不同),尽管它们具有相同的值。
期待解决方案。
解决方案
selectedValues = values.map(item => item.value)
menu.filter(item => selectedValues.includes(item.value))
推荐阅读
- c++ - 如何防止 QTableview 中过于激进的文本省略?
- android - Screencapture.screenshot 图像看起来不像屏幕。显示时是半透明的(Unity 3D,Android)
- r - 您如何使用 R 中的支持向量回归预测未来值
- highcharts - Highchart 热图:为什么只显示每一秒的数据值?
- javascript - 为什么使用 JavaScript 后缀递增/递减运算符?
- python - 检查 Pandas 列中是否存在元素(系列)
- google-apps-script - 在 Google 电子表格中传输和删除数据
- python - 我安装了 Pillow 并尝试使用 from PIL import Image 但它给出了错误
- javascript - 在没有 momentjs 的情况下获取长语言环境日期格式
- python - django 中不存在模板,但我有模板?