javascript - 从数组动态创建对象

标签 javascript arrays

我想生成一个动态对象并为其赋值。下面是代码

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

所以输出应该是这样的

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

尝试循环数组,但目前没有任何效果。请告知。

最佳答案

试试这个:

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;

为了更方便,你可以将它放在一个函数中:

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);

关于javascript - 从数组动态创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47976944/

相关文章:

javascript - 在添加 ApiController 属性之前,ASP.NET Core 3.1 无法处理 Axios 请求

javascript - 从数组中删除引号以充当函数(变量)

php - 如何动态创建一个 10 到 100 的数组,值之间的差距为 10?

java - 尝试比较两个数组并打印第一个数组的行(如果它们匹配)并为整个第一个数组循环它

java - 在 Java 中使用 for 循环打印和二维数组

javascript - 使用 .forEach() 动态生成数组

javascript - 如何检查是否已经有与元素关联的点击/事件

javascript - 从 Vue.JS 中的子对象收集值并分配给父对象键

javascript - Parse.com 安全 : can I save an object and claim it's another user's?

javascript - IE10使用显示通过ajax发送FormData对象:none file-input