javascript - 平面数组到多维数组 (JavaScript)

标签 javascript arrays object

我有以下数组:

var sampleArray = [
  "CONTAINER",
  "BODY",
  "NEWS",
  "TITLE"];

我想要以下输出:

var desiredOutput = [{
        "CONTAINER": [{
            "BODY": [{
                "NEWS": [{
                    "TITLE": []
                }]
            }]
        }]
    }];

如何在 JavaScript 中实现这一点?

已经尝试过递归循环,但它不起作用,给我未定义。

    dataChange(sampleArray);
    function dataChange(data) {
        for (var i = 0; i < data.length; i++) {
            changeTheArray[data[i]] = data[i + 1];
            data.splice(i, 1);
            dataChange(changeTheArray[data[i]]);
        }
    }

谢谢

最佳答案

这会在一行中完成您的要求,并且没有其他变量:

let desiredOutput = sampleArray.reduceRight((obj, key) => [ { [key]: obj } ], []);

reduceRight调用,从数组的右手端开始,逐步累积当前数据(以 [] 的初始值作为种子)作为新对象中单个键的值 { [key] : _value_ }该对象本身就是数组中的单个条目 [ ... ] .

关于javascript - 平面数组到多维数组 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956309/

相关文章:

python - "Int"对象不可迭代

javascript - 如何在单击 li 元素后更改其背景?

javascript - 如何在 CoffeeScript 事件处理程序中获取参数

arrays - 在 Swift 3 中使用嵌套数组解析 JSON

javascript - 按字符串对对象元素进行排序,其中每个字符串都是一个数组

java - 以正确的顺序向 JTable 添加行。

javascript - 与 script 和prototype.js 冲突

javascript - $(document).ready 等效于异步加载的内容

java - 为什么这个简单的代码会抛出 NullPointerException?

javascript - javascript中的for循环以增量方式访问元素