gpt4 book ai didi

javascript - 使用计算属性名称创建内部对象

转载 作者:行者123 更新时间:2023-11-30 09:26:24 25 4
gpt4 key购买 nike

如果我创建一个像这样的对象

const name = "email";

form = {[name]: "jon@doe.com"}

我的 form 对象看起来像这样

{email: "jon@doe.com"}

是否可以设置name only我的结果看起来像

{
info: {
email: "jon@doe.com"
}
}

我试过:

const name = "info.email";

form = {[name]: "jon@doe.com"}

但是生成的 form 对象看起来像:

{info.email: "jon@doe.com"}

我也试过:

const name = "info[email]";

form = {[name]: "jon@doe.com"}

但是生成的 form 对象看起来像:

{info[email]: "jon@doe.com"}

最佳答案

@Dude 你不能直接那样做

因为 Object 会将键作为字符串,无论您将传递给它什么,都将其指定为键

所以如果你尝试

const name = "info.email";
form = {[name]: "jon@doe.com"}
它会将“info.email”作为键并将值分配给该键。

如果您想要在字符串包含点“.”

的情况下创建内部对象

您可以编写一个函数,将字符串键转换为内部对象。

    const createObject = (jsonPath, delimiter='.') => {
const innerKeys = jsonPath.split(delimiter);
const key = innerKeys.splice(0,1);
if(innerKeys.length>0){
return {[key]:createObject(innerKeys.join(delimiter), delimiter)}
}else{
return key[0];
}
}
console.log(createObject('info.name.vishnu')); //{"info":{"name":"vishnu"}}
console.log(createObject('info,name,vishnu'), ','); //{"info":{"name":"vishnu"}}

关于javascript - 使用计算属性名称创建内部对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48911540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com