4

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"]
2

4 Answers 4

7

You 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]));
}
Sign up to request clarification or add additional context in comments.

Comments

3

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

Comments

2

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

Comments

0

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"]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.