gpt4 book ai didi

javascript - 改进将点符号中的序列化对象转换为js对象的功能

转载 作者:行者123 更新时间:2023-11-29 19:12:28 27 4
gpt4 key购买 nike

我有字符串 "presentation.launchBehavior.newWindow",需要反序列化为对象:

var obj = {presentation: {launchBehavior: 'newWindow'}}

点后的最后一个字符串应该是值,而其他字符串应该转换为字符串。我已经编写了执行此操作的函数:

function des(obj, property, index, ar) {
var isLastCall = ar.length - 1 === index;
if (isLastCall) {
return;
}

var isNextLastCall = ar.length - 2 === index;
if (isNextLastCall) {
obj[property] = ar[ar.length - 1];
return obj;
} else {
obj[property] = {};
return obj[property];
}
}

var obj = {};
"presentation.launchBehavior.newWindow".split(".").reduce(des, obj);
obj.presentation.launchBehavior // newWindow

它可以工作,但我想改进它以返回结果对象,而不必在函数外部创建变量。我怎样才能做到这一点?也许函数的内部结构也可以改进。

最佳答案

您可以使用reduceRight:

const des = str => str.split(".").reduceRight( (prev, key) => ({[key]: prev}) );

console.log(des("presentation.launchBehavior.newWindow"));

关于javascript - 改进将点符号中的序列化对象转换为js对象的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37785593/

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