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”][“椅子车”]=“候补”;没有任何问题