Gurigraphics Gurigraphics - 22 days ago 12
Javascript Question

splice row from array by value

I want splice the line with value = 3

[3,"John", 90909090]


data.json

{
"headers":[[
{"text":"Code","class":"Code"},
{"text":"Code","class":"Code"}
]],
"rows":[
[0,"Peter", 51123123],
[3,"John", 90909090],
[5,"Mary",51123123]
],
"config":[[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],
"other":[[13,0]]
}


I try this:

var size = data.rows.length; // number of rows

var del = 3 // Value of ID to be deleted

for (i = 0; i < size; i++) {

var id = data.rows[i][0];

if(del==id){ // if del = id -> splice

data.rows.splice(i,1);

}

}


Results:

Only splice or only loop this code works.

But, with both show this error:


Uncaught TypeError: Cannot read property '0' of undefined(…)


It occurs in "data.rows[i][0]"

Answer

You can iterate with Array#forEach():

var data = {"headers": [[{"text": "Code","class": "Code"}, {"text": "Code","class": "Code"}]],"rows": [[0, "Peter", 51123123],[3, "John", 90909090],[5, "Mary", 51123123]],"config": [[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],"other": [[13, 0]]},
    del = 3; // Value of ID to be deleted

data.rows.forEach(function(item, index) {
  item[0] === del && data.rows.splice(index, 1);
});

console.log(data.rows);
.as-console-wrapper { max-height: 100% !important; top: 0; }

ES6:

data.rows.forEach((item, index) => item[0] === del && data.rows.splice(index, 1));