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字符串后使用
1 | var parse = Object.values(JSON.parse(string)) |
仅供参考:您可以直接对对象执行此操作,而无需进行字符串化和解析(这没有任何意义)。因此,只需使用
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" ] |
然后,您需要获取对象
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" ] ] |
那么您只需要添加
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"] |