我有一个javascript对象,当我JSON.stringify它时,它看起来像是
[
{
"item_id": null,
"parent_id": "none",
"depth": 0,
"left": "1",
"right": 4
},
{
"item_id": "1",
"parent_id": null,
"depth": 1,
"left": 2,
"right": 3
}
]
我想将其转换为多维数组,如下所示
item[0][0] = item_id
item[0][1] = parent_id
item[0][2] = depth
item[0][3] = left
item[0][4] = right
item[1][0] = item_id
item[1][1] = parent_id
item[1][2] = depth
item[1][3] = left
item[1][4] = right
任何帮助将不胜感激:)
编辑:在所有人的帮助下工作了:)感谢大家的帮助。
答案 0 :(得分:4)
好吧,让我们在stringify
之前获取初始对象(数组)。有了这个,我们可以循环每个项目。然后我们可以为每个属性创建一个新数组。像这样:
var myObject = X;//this is your original object
var newArray = [];
for(var i = 0; i < myObject.length; i++){
var item = myObject[i];
var subArray = [];
subArray.push(item["item_id"]);
subArray.push(item["parent_id"]);
subArray.push(item["depth"]);
subArray.push(item["left"]);
subArray.push(item["right"]);
newArray.push(subArray);
}
Here is a working example(检查控制台的结果)
注意:由于有关订单可靠性的谣言,我故意避免使用for in
循环。当然,如果你信任它,那就是你的电话,但我更喜欢安全地玩。 You can read some other opinions of this matter here
如果要提高性能,可以直接从值创建数组,如下所示:
for (var i = 0; i < myObject.length; i++) {
var item = myObject[i];
var subArray = [item["item_id"], item["parent_id"], item["depth"], item["left"], item["right"]];
newArray.push(subArray);
}
这大约是性能提升两倍here is the proof
答案 1 :(得分:1)
你的“对象”实际上是一个数组。
var item = [];
for (var i=0; i<yourArray.length; i++) {
var subArray = [];
var obj = yourArray[i];
for (var j in obj) {
subArray.push(j);
}
item.push(subArray);
}
答案 2 :(得分:0)
通过迭代每个对象的字段来映射数组元素
var item = yourarray.map(function (o) {
var s =[];
for (var f in o) {
s.push(o[f]);
}
return s;
});
答案 3 :(得分:-2)
对于递归,对于数据对象的尺寸不是有限的:
function isArray($obj) {
return Object.prototype.toString.call($obj) === '[object Array]';
}
function subObject(data) {
if(isArray(data)){
return (subArray(data));
}
var result = [];
for (var i in data) {
var item = data[i];
if (item === null) { // null type is ojbect ..!
result.push(item);
} else if (isArray(item)) {
result.push(subArray(item));
} else if (typeof item === 'object') {
result.push(subObject(item));
} else {
result.push(item);
}
}
return result;
}
function subArray(data) {
var result = [];
for (var i = 0; i < data.length; i++) {
var item = data[i];
if (item === null) { // null type is ojbect ..!
result.push(item);
} else if (isArray(item)) {
result.push(subArray(item));
} else if (typeof item === 'object') {
result.push(subObject(item));
} else {
result.push(item);
}
}
return result;
}
var r = subObject(data);
console.log(r);