简体   繁体   English

从数组创建动态对象

[英]Dynamic object creation from an array

I want to generate a dynamic object and assign value into it.我想生成一个动态对象并为其赋值。 Following is the code以下是代码

var chunk = "INTERNATIONALISATION#LANGUAGE#DICTIONARY#EN";
var c = chunk.split('#');
var a = {};

So the output should be like this所以输出应该是这样的

a["INTERNATIONALISATION"]["LANGUAGE"]["DICTIONARY"]["EN"] = 10;

Tried looping through array but nothing works for now.Please advise.尝试遍历数组,但目前没有任何效果。请指教。

Try this:尝试这个:

var chunk = "INTERNATIONALISATION#LANGUAGE#DICTIONARY#EN";
var c = chunk.split('#');
var a = {};
var lastKey = c.pop();
c.reduce((obj, key) => obj[key] = obj[key] || {}, a)[lastKey] = 10;

To make it more convenient you can put it in a function:为了更方便,你可以把它放在一个函数中:

const dynamicAssign = (object, stringPath, value) => {
    const path = stringPath.split('#');
    const lastKey = path.pop();
    const target = path.reduce((obj, key) => obj[key] = obj[key] || {}, object);
    target[lastKey] = value;
};

const a = {};
dynamicAssign(a, "INTERNATIONALISATION#LANGUAGE#DICTIONARY#EN", 10);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM