0

我有一个 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

任何帮助都感激不尽 :)

编辑:在所有人的帮助下得到它的工作:) 感谢大家的帮助。

4

4 回答 4

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);
}

这是一个工作示例(检查控制台的结果)

注意:我故意避免使用for in循环,因为我经常听到关于订单可靠性的谣言。当然,如果你相信它,那是你的决定,但我更喜欢安全起见。您可以在此处阅读有关此问题的其他一些意见


如果要提高性能,可以直接从值创建一个数组,如下所示:

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);
}

这大约是性能的两倍,这是证明

于 2013-07-19T08:16:07.793 回答
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);
}
于 2013-07-19T08:16:34.030 回答
0

通过遍历每个对象的字段来映射您的数组元素

var item = yourarray.map(function (o) { 
  var s =[];
  for (var f in o) { 
    s.push(o[f]);
  }
  return s; 
});
于 2013-07-19T08:19:31.450 回答
-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);
于 2013-07-19T08:25:13.813 回答