I am trying to convert a json string to an array but i still get json code in return when i parse it.
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);
now i still get this output
0: {id: "4", club: "driver", afstand: "230", shot: "straight", uitvoering: "perfect"}
1: {id: "9", club: "ijzer7", afstand: "140", shot: "straight", uitvoering: "perfect"}
but i want something like this in an array
[4, "driver", 240, "straight", "perfect"]
I am trying to convert a json string to an array but i still get json code in return when i parse it.
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);
now i still get this output
0: {id: "4", club: "driver", afstand: "230", shot: "straight", uitvoering: "perfect"}
1: {id: "9", club: "ijzer7", afstand: "140", shot: "straight", uitvoering: "perfect"}
but i want something like this in an array
[4, "driver", 240, "straight", "perfect"]
Share
Improve this question
asked Aug 17, 2019 at 17:30
LanceLance
531 gold badge1 silver badge5 bronze badges
2
|
4 Answers
Reset to default 7You need to extract values from the object, use Object.values
method after parsing the JSON string.
var parse = Object.values(JSON.parse(string))
FYI : You can do it directly to the object instead of stringifying and parsing(which doesn't makes any sense). So simply iterate and extract values from object using Object.values
method.
for(var i=0; i < data.length; i++){
slag.push(Object.values(data[i]));
}
Simply do
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);
hope this helps :)
I can't figure out your expected outcome, But I have 2 solutions for you If you want your response like:
[
"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);
If you want your outcome like this:
[
[
"4",
"driver",
"230",
"straight",
"perfect"
],
[
"9",
"ijzer7",
"140",
"straight",
"perfect"
]
]
Then you just need to add map()
method only
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
I'm a little confused as to why you're stringifying it and then parsing it right after? date[i] and parse would have the same output unless I'm missing something.
If you want to deconstruct an objects values into an array you can use the Object.values method.
Consider the following:
let x = {id: "4", club: "driver", afstand: "230", shot: "straight", uitvoering: "perfect"};
console.log(Object.values(x));
// output: ["4", "driver", "230", "straight", "perfect"]
So if you wanted a multi-dimensional array (not sure why this would be desired but it looks like that's what you're trying to accomplish) you could do this:
var slag = [];
for(var i=0; i < data.length; i++) {
slag.push(Object.values(data[i]);
}
console.log(slag);
That would output:
0: ["4", "driver", "230", "straight", "perfect"]
1: ["9", "ijzer7", "140", "straight", "perfect"]
Object.values(...)
– Pranav C Balan Commented Aug 17, 2019 at 17:32