我有一个数组。可以说是:
const array = ["lvl1", "lvl2", "lvl3", "key"]
我有一个价值。可以说是:
const value = false
我有一个对象。可以说是:
const object = {
lvl1: {
dogs: "bark",
lvl2: {
cats: "meow",
lvl3: {
cows: "moo"
key: true
}
}
}
}
如何创建一个包含arrayand的函数value,然后更新该对象,以便key使用新的更新数组中的(数组中的最后一项)value?需要根据array.length - 1数组中的第一个字符串适当地嵌套它。
例如,我们将其称为函数createObject。如果我使用array并value已在上面将其定义为:
const newObject = createObject(array, value)
然后,newObject应该等于:
{
lvl1: {
dogs: "bark",
lvl2: {
cats: "meow",
lvl3: {
cows: "moo"
key: false
}
}
}
}
这是另一个具有不同嵌套级别的示例:
const updatedObject = createObject(["lvl1", "lvl2", "cats"], "stink")
然后,updatedObject应该等于:
{
lvl1: {
dogs: "bark",
lvl2: {
cats: "stink",
lvl3: {
cows: "moo"
key: true
}
}
}
}
我已经走了这么远,但没有用:
import object from "./object"
const createObject = (array, value) => {
let results = object;
for (let i = 0; i < array.length; i++) {
i === array.length - 1
? (results = results[array[i]] = {
...results[array[i]],
[array[i]]: value
})
: (results = results[array[i]] = {
...results[array[i]],
[results[array[i]]]: {}
});
}
return results;
}
我不想更改初始对象。我想返回一个新对象。而且我不会在对象上添加任何新的键/值对,而只会更改现有的键/值对。
烙印99
相关分类