关于javascript:将json转换为数组

Convert json to array

我正在尝试将json字符串转换为数组,但是当我解析它时,我仍然得到json代码作为回报。

1
2
3
4
5
6
7
8
var slag = [];
                for(var i=0; i < data.length; i++)
                {
                    var string = JSON.stringify(data[i]);
                    var parse = JSON.parse(string)
                    slag.push(parse);
                }
                console.log(slag);

现在我仍然得到此输出

1
2
0: {id:"4", club:"driver", afstand:"230", shot:"straight", uitvoering:"perfect"}
1: {id:"9", club:"ijzer7", afstand:"140", shot:"straight", uitvoering:"perfect"}

但是我想要在数组中这样的东西

1
[4,"driver", 240,"straight","perfect"]


您需要从对象中提取值,在解析JSON字符串后使用Object.values方法。

1
var parse = Object.values(JSON.parse(string))

仅供参考:您可以直接对对象执行此操作,而无需进行字符串化和解析(这没有任何意义)。因此,只需使用Object.values方法迭代并从对象中提取值。

1
2
3
for(var i=0; i < data.length; i++){
    slag.push(Object.values(data[i]));
}


只需做

1
2
3
4
5
let data = [{id:"4", club:"driver", afstand:"230", shot:"straight", uitvoering:"perfect"}, {id:"9", club:"ijzer7", afstand:"140", shot:"straight", uitvoering:"perfect"}];

var slag = data.map(doc => Object.values(doc));

console.log(slag);

希望这会有所帮助:)


我不知道您的预期结果,但是我有两种解决方案
如果您希望您的答复如下:

1
2
3
4
5
6
7
8
9
10
11
12
[
 "4",
 "driver",
 "230",
 "straight",
 "perfect",
 "9",
 "ijzer7",
 "140",
 "straight",
 "perfect"
]

然后,您需要获取对象Object.values(element)的值,并对其进行另一个循环,然后将其压入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const array = [{
    id:"4",
    club:"driver",
    afstand:"230",
    shot:"straight",
    uitvoering:"perfect"
}, {
    id:"9",
    club:"ijzer7",
    afstand:"140",
    shot:"straight",
    uitvoering:"perfect"
}];

const slug = [];

 for (let i= 0; i < array.length; i += 1) {
    const element = array[i];
    Object.values(element).forEach((r) => { slug.push(r) });
 }

console.log(slug);

如果您希望这样的结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[
  [
   "4",
   "driver",
   "230",
   "straight",
   "perfect"
  ],
  [
   "9",
   "ijzer7",
   "140",
   "straight",
   "perfect"
  ]
]

那么您只需要添加map()方法即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const array1 = [{
    id:"4",
    club:"driver",
    afstand:"230",
    shot:"straight",
    uitvoering:"perfect"
}, {
    id:"9",
    club:"ijzer7",
    afstand:"140",
    shot:"straight",
    uitvoering:"perfect"
}];

const slug = array1.map((m) => { return Object.values(m); });
console.log(slug);

In both cases Object.values() is used for such operations


对于您为什么先对其进行字符串化然后立即对其进行解析,我有点困惑?除非缺少某些内容,否则date [i]和parse将具有相同的输出。

如果要将对象值解构为数组,可以使用Object.values方法。

请考虑以下内容:

1
2
3
4
let x = {id:"4", club:"driver", afstand:"230", shot:"straight", uitvoering:"perfect"};

console.log(Object.values(x));
// output: ["4","driver","230","straight","perfect"]

因此,如果您想要一个多维数组(不确定为什么要这样做,但是看起来这就是您要完成的工作),则可以执行以下操作:

1
2
3
4
5
6
7
var slag = [];

for(var i=0; i < data.length; i++) {
    slag.push(Object.values(data[i]);
}

console.log(slag);

这将输出:

1
2
0: ["4","driver","230","straight","perfect"]
1: ["9","ijzer7","140","straight","perfect"]