javascript - JS 将字符串转换为多维对象键

标签 javascript

我有一个字符串,例如:

convert.lamp.stamp.glass.nose 

我想创建一个对象键“ Nose ”(坦克对象已创建):

tank['convert']['lamp']['stamp']['glass']['nose'] 

我该怎么做?

我使用 split 得到了数组

values = 'convert.lamp.stamp.glass.nose'.split('.');

现在我不知道如何使用jquery的each方法来创建这些键。

最佳答案

您可以拆分字符串并将其用作对象的键。

该提案使用

var object = { convert: { lamp: { stamp: { glass: { nose: 42 } } } } },
    path = 'convert.lamp.stamp.glass.nose',
    value = path.split('.').reduce(function (v, k) {
        return (v || {})[k];
    }, object);

console.log(value);

ES6

var object = { convert: { lamp: { stamp: { glass: { nose: 42 } } } } },
    path = 'convert.lamp.stamp.glass.nose',
    value = path.split('.').reduce((v, k) => (v || {})[k], object);

console.log(value);

要使用给定的键创建对象,您可以使用此

var object = {},
    path = 'convert.lamp.stamp.glass.nose'.split('.'),
    last = path.pop();

path.reduce(function (o, k) {
    o[k] = o[k] || {};
    return o[k];
}, object)[last] = 42;

console.log(object);

ES6

var object = {},
    path = 'convert.lamp.stamp.glass.nose'.split('.'),
    last = path.pop();

path.reduce((o, k) => o[k] = o[k] || {}, object)[last] = 42;
console.log(object);

关于javascript - JS 将字符串转换为多维对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061790/

相关文章:

javascript - 从 web2py 中的 python 字符串渲染 HTML,生成 @usename 链接 python

javascript - 用于开发拖放 Web 应用程序的最佳 javascript 库

javascript - Web服务调用期间Angularjs中的异常

javascript - 下载属性在 Firefox 中不起作用

javascript - 超出最大调用堆栈大小 - Connected React Component

javascript - 幻灯片放映中带有多个图像(上一个/下一个)的 jQuery slider 轮播?

javascript - HTML 下拉框重定向

Javascript 获取响应截止

javascript - 403 禁止使用 REST

javascript - 从 100% 过渡到自动