我需要一个关于如何访问和更新以下对象的值的帮助。首先,我比较了不同对象是否包含相同的键值对。如果它们不相同,那么我想更新其中一个对象的值。例如,
const selectedObj = {
"building": ["3"],
"unit": [ "2"],
"filterOrder":
[
{"building": "3" },
{ "unit": "2" }
]
}
const defaultObj = {
"building": [ "0", "1", "2" ],
"unit": ["1", "2", "13", "17"]
}
const arr1 = selectedObj.building;
const arr2 = defaultObj;
const hasAllElems = arr1.every(elem => arr2.includes(elem));
console.log(hasAllElems); // false
我尝试执行以下操作,并能够更新selectedObj.building属性,但无法正确访问值filterOrder。
new_obj = {
...selectedObj,
unit: ["3"]
filterOrder: [{"unit": "3"}]
}
这是我尝试访问和更新filterOrder属性时得到的结果。
[
{
"building": "3",
"unit": "3"
}
]
代替
[
{
"building": "1"
},
{
"unit": "3"
}
]
如果键值对的顺序被切换了,我可以简单地使用下面的代码,并且它每次都能工作。不幸的是,它不是那么动态的。这个方法意味着unit必须在我的对象的第一个属性中。
selectedObj.filterOrder[0]["unit"] = "";
1条答案
按热度按时间iklwldmw1#
假设您有两个名为defaultObj和selectedObj的对象,并且要比较它们的建筑属性并在必要时更新它们,则可以执行以下操作:
此代码比较两个对象的building属性,如果它们不同,则检查selectedObj的filterSortingOrder数组中第一个元素的building属性是否也与defaultObj的building属性不同。如果它们都不同,则将所有三个对象的building属性更新为空字符串。
希望这对你有帮助。