Javascript 用简单的方法分配多维数组元素

Javascript 用简单的方法分配多维数组元素,javascript,Javascript,我想这样快速分配: obj = {}; obj["train-11456"]["2016-12-11" ]["chair car"] = 'waitlisted'; 所有这些元素都是对象 我们可以在PHP中这样做,它会自动创建它们 这样分配的最简单方法是什么? 更长的路是: obj["train-11456"] = {} //only if this key does not already exist obj["train-11456"]["2016-12-11" ] = {}; //on

我想这样快速分配:

obj = {};
obj["train-11456"]["2016-12-11" ]["chair car"] = 'waitlisted';
所有这些元素都是对象

我们可以在PHP中这样做,它会自动创建它们

这样分配的最简单方法是什么?

更长的路是:

obj["train-11456"] = {}  //only if this key does not already exist
obj["train-11456"]["2016-12-11" ] = {}; //only if this key does not alreadu exist
obj["train-11456"]["2016-12-11" ]["chair car"] = 'waitlisted';
你可以这样做

obj = {
    "train-11456": {
        "2016-12-11": {
            "chair car" : "waitlisted"
        }
    }
};

你可以这样做

obj = {
    "train-11456": {
        "2016-12-11": {
            "chair car" : "waitlisted"
        }
    }
};


没有直接的方法可以做到这一点。但是您可以编写一个实用函数来为您执行此操作。这是一种速记

function objUtil (obj) {
    var _o = obj || {};

    return function () {
        var args = [].slice.call(arguments, 0),
            val = args.splice(args.length - 1, 1)[0],
            res = {},
            index, length, key, objPointer, lastObjPtr;

        objPointer = _o;

        for (index = 0, length = args.length; index < length; index ++) {
            key = args[index];
            lastObjPtr = objPointer;
            objPointer = objPointer[key] = {};
        }

        lastObjPtr[key] = val;
        return _o;
    }
}

没有直接的方法可以做到这一点。但是您可以编写一个实用函数来为您执行此操作。这是一种速记

function objUtil (obj) {
    var _o = obj || {};

    return function () {
        var args = [].slice.call(arguments, 0),
            val = args.splice(args.length - 1, 1)[0],
            res = {},
            index, length, key, objPointer, lastObjPtr;

        objPointer = _o;

        for (index = 0, length = args.length; index < length; index ++) {
            key = args[index];
            lastObjPtr = objPointer;
            objPointer = objPointer[key] = {};
        }

        lastObjPtr[key] = val;
        return _o;
    }
}

在javascript中不能直接这样做,因为数组(这是[]括号所代表的)只能有数字索引。这是一种OO语言(ish),所以你必须处理对象。你不能直接在javascript中这样做,因为数组(这是[]括号所代表的)只能有数字索引。这是一种OO语言(ish),所以你必须处理对象。obj[“train-11456”][“2016-12-11”][“chair car”]我觉得不同的是,花括号而不是方括号,并在末尾关闭而不是立即关闭。如果您看到的话,花括号和方括号的数量是相同的。而且它会丢弃早期的对象数据。没有什么用处。如果您已经定义了obj[“train-11456”][“2016-12-11”],那么您可以自由使用obj[“train-11456”][“2016-12-11”][“椅子车”]=“候补”;没有任何问题BJ[“train-11456”][“2016-12-11”][“椅子车”]我觉得不同的是,卷曲的大括号代替了方括号,并在结尾处关闭,而不是立即关闭。如果您看到的话,花括号和方括号的数量是相同的。而且它会丢弃早期的对象数据。没有什么用处。如果您已经定义了obj[“train-11456”][“2016-12-11”],那么您可以自由使用obj[“train-11456”][“2016-12-11”][“椅子车”]=“候补”;没有任何问题