初始化“多维” JavaScript 中的对象

发布于 2024-12-09 03:31:08 字数 496 浏览 0 评论 0原文

我在定义所有维度之前尝试在 javascript 中填充多维对象时遇到问题。

例如,这就是我想要做的:

var multiVar = {};
var levelone = 'one';
var leveltwo = 'two';

multiVar[levelone][leveltwo]['levelthree'] = 'test'

必须用这样的线创建每个维度将是非常麻烦的:

var multiVar = {};

multiVar['levelone'] = {};
multiVar['levelone']['leveltwo'] = {};
multiVar['levelone']['leveltwo']['levelthree'] = 'test'

我需要在没有迭代启动的情况下执行此操作的原因是因为我不知道会有多少个维度也不是它所拥有的钥匙。它需要是动态的。

有没有办法以动态的方式做到这一点?

I'm having an issue with trying to populate a multidimensional object in javascript before all of the dimensions are defined.

For example this is what I want to do:

var multiVar = {};
var levelone = 'one';
var leveltwo = 'two';

multiVar[levelone][leveltwo]['levelthree'] = 'test'

It would be extremely cumbersome to have to create each dimension with a line like this:

var multiVar = {};

multiVar['levelone'] = {};
multiVar['levelone']['leveltwo'] = {};
multiVar['levelone']['leveltwo']['levelthree'] = 'test'

The reason why I need to do it without iterative priming is because I don't know how many dimensions there will be nor what the keys it will have. It needs to be dynamic.

Is there a way to do that in a dynamic way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

-柠檬树下少年和吉他 2024-12-16 03:31:08

您可以编写一个函数来确保必要的“维度”的存在,但您将无法使用点或括号表示法来获得这种安全性。像这样的:

function setPropertySafe(obj)
{
    function isObject(o)
    {
        if (o === null) return false;
        var type = typeof o;
        return type === 'object' || type === 'function';
    }

    if (!isObject(obj)) return;

    var prop;
    for (var i=1; i < arguments.length-1; i++)
    {
        prop = arguments[i];
        if (!isObject(obj[prop])) obj[prop] = {};
        if (i < arguments.length-2) obj = obj[prop];
    }

    obj[prop] = arguments[i];
}

用法示例:

var multiVar = {};
setPropertySafe(multiVar, 'levelone', 'leveltwo', 'levelthree', 'test');
/*
multiVar = {
    levelone: {
        leveltwo: {
            levelthree: "test"
        }
    }
}
*/

You could write a function which ensures the existence of the necessary "dimensions", but you won't be able to use dot or bracket notation to get this safety. Something like this:

function setPropertySafe(obj)
{
    function isObject(o)
    {
        if (o === null) return false;
        var type = typeof o;
        return type === 'object' || type === 'function';
    }

    if (!isObject(obj)) return;

    var prop;
    for (var i=1; i < arguments.length-1; i++)
    {
        prop = arguments[i];
        if (!isObject(obj[prop])) obj[prop] = {};
        if (i < arguments.length-2) obj = obj[prop];
    }

    obj[prop] = arguments[i];
}

Example usage:

var multiVar = {};
setPropertySafe(multiVar, 'levelone', 'leveltwo', 'levelthree', 'test');
/*
multiVar = {
    levelone: {
        leveltwo: {
            levelthree: "test"
        }
    }
}
*/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文