-1

I need to parse this string

d = "1 3 2 1,1 1 2 4,1 1 2 5,1 1 2 6,1 7 2 1,1 8 2 1,1 9 2 1,1 1 3 4,1 1 3 5,1 1 3 6,1 7 3 1,1 1 3 8,1 1 3 9,1 5 4 1,1 6 4 1,1 7 4 1,1 1 4 8,1 1 4 9,1 6 5 1,1 7 5 1,1 1 5 8,1 9 5 1,1 7 6 1,1 8 6 1,1 1 6 9,1 1 7 8,1 9 7 1,1 9 8 1,1 4 3 2,1 2 3 5,1 6 3 2,1 2 3 7,1 2 3 8,1 9 3 2,1 2 4 5,1 2 4 6,1 7 4 2,1 8 4 2,1 2 4 9,1 6 5 2,1 2 5 7,1 2 5 8,1 2 5 9,1 2 6 7,1 2 6 8,1 9 6 2,1 8 7 2,1 2 7 9,1 2 8 9,1 5 4 3,1 3 4 6,1 3 4 7,1 8 4 3,1 3 4 9,1 6 5 3,1 3 5 7,1 3 5 8,1 3 5 9,1 7 6 3,1 3 6 8,1 3 6 9,1 8 7 3,1 3 7 9,1 9 8 3,1 4 5 6,1 4 5 7,1 4 5 8,1 9 5 4,1 7 6 4,1 4 6 8,1 9 6 4,1 4 7 8,1 4 7 9,1 4 8 9,1 7 6 5,1 5 6 8,1 5 6 9,1 8 7 5,1 9 7 5,1 5 8 9,1 6 7 8,1 9 7 6,1 6 8 9,1 9 8 7"

into a 2d array that looks like this:

d = [[1,3,2,1][1,2,3,4],[1,2,3,4]...... and so on]

where the strings are converted to individual integers.

Could someone do this in 10 lines or less? I've figured it out but my code is a mess and must be longer than it needs to be

edit - here's my crappy code:

let ds = d.split(",");
let temp = [];

for (i= 0; i<=ds.length; i++){
    temp.push([ds[i]])
}
let set = [];
for (i= 0; i<=temp.length-1; i++){

    let t2 = temp[i].toString();
    let t3 = t2.split(" ")
    set.push(t3);
}

for (i= 0; i<=set.length-1; i++){
    for (j= 0; j<=3; j++){
        set[i][j] = Number(set[i][j]);
}
}
console.log(set);
0

1 Answer 1

1

Split by commas, then map each substring to a split on spaces:

const d = "1 3 2 1,1 1 2 4,1 1 2 5,1 1 2 6,1 7 2 1,1 8 2 1,1 9 2 1,1 1 3 4,1 1 3 5,1 1 3 6,1 7 3 1,1 1 3 8,1 1 3 9,1 5 4 1,1 6 4 1,1 7 4 1,1 1 4 8,1 1 4 9,1 6 5 1,1 7 5 1,1 1 5 8,1 9 5 1,1 7 6 1,1 8 6 1,1 1 6 9,1 1 7 8,1 9 7 1,1 9 8 1,1 4 3 2,1 2 3 5,1 6 3 2,1 2 3 7,1 2 3 8,1 9 3 2,1 2 4 5,1 2 4 6,1 7 4 2,1 8 4 2,1 2 4 9,1 6 5 2,1 2 5 7,1 2 5 8,1 2 5 9,1 2 6 7,1 2 6 8,1 9 6 2,1 8 7 2,1 2 7 9,1 2 8 9,1 5 4 3,1 3 4 6,1 3 4 7,1 8 4 3,1 3 4 9,1 6 5 3,1 3 5 7,1 3 5 8,1 3 5 9,1 7 6 3,1 3 6 8,1 3 6 9,1 8 7 3,1 3 7 9,1 9 8 3,1 4 5 6,1 4 5 7,1 4 5 8,1 9 5 4,1 7 6 4,1 4 6 8,1 9 6 4,1 4 7 8,1 4 7 9,1 4 8 9,1 7 6 5,1 5 6 8,1 5 6 9,1 8 7 5,1 9 7 5,1 5 8 9,1 6 7 8,1 9 7 6,1 6 8 9,1 9 8 7";

const arr = d
  .split(',')
  .map(str => str
    .split(' ')
    .map(Number)
  );
console.log(arr);

Sign up to request clarification or add additional context in comments.

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.