将JSON转换为数组

3

我试图将一个json字符串转换为数组,但是当我解析它时,仍然返回json代码。

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

现在我仍然得到这个输出。

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

但我希望在数组中获得类似这样的内容。
[4, "driver", 240, "straight", "perfect"]

Object.values(...) - Pranav C Balan
可能是重复的问题,关于如何将JSON对象转换为JavaScript数组,请参考如何将JSON对象转换为JavaScript数组 - Dean Coakley
4个回答

6

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

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

注意:您可以直接对对象进行操作,而无需将其转换为字符串并解析(这没有任何意义)。因此,只需使用 Object.values 方法迭代并提取对象中的值即可。

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

3

只需执行以下步骤:

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

希望这有所帮助 :)

2
我不清楚您期望的结果是什么,但我有两个解决方案供您选择。如果您希望您的响应如下所示:
[
  "4",
  "driver",
  "230",
  "straight",
  "perfect",
  "9",
  "ijzer7",
  "140",
  "straight",
  "perfect"
]

Then you need to take values of an object Object.values(element) and make another loop over it and push it in slug

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

如果您想要这样的结果:

[
  [
    "4",
    "driver",
    "230",
    "straight",
    "perfect"
  ],
  [
    "9",
    "ijzer7",
    "140",
    "straight",
    "perfect"
  ]
]

那么你只需要添加map()方法就可以了。最初的回答。

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

在这两种情况下,都使用Object.values()进行此类操作。最初的回答。

0

我有点困惑,你为什么要将它转换成字符串,然后立即解析它呢?除非我漏掉了什么,date[i]和parse的输出应该是相同的。

如果你想将一个对象的值拆分成一个数组,可以使用Object.values方法。

考虑以下内容:

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

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

如果你想要一个多维数组(不确定为什么会有这种需求,但看起来你是想要实现这个),你可以这样做:
var slag = [];

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

console.log(slag);

这将输出:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接