Javascript从嵌套数组中删除数组

时间:2018-07-30 06:43:14

标签: javascript arrays

我在localStorage中有一个嵌套数组

arr = [["STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "TShirt", "Redshift", 267, 403, 377, 389, 385, 479, 275, 493], 
       ["STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "TShirt", "Redshift", 317, 319, 428, 325, 426, 372, 315, 366],
       ["STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "TShirt", "Redshift", 425, 490, 539, 425, 526, 472, 215, 478]]

基于两点条件,我想删除一个特定的数组并将其存储回localStorage。

var a = 267;
var b = 403;

for (var i = 0; i < arr.length; i++) {
    if (arr[i][0] === "STAR_SPORTS_2-20170924-200043-210917-00142.jpg") {
      first.x = arr[i][3];
      first.y = arr[i][4]; 
      second.x = arr[i][5]; 
      second.y = arr[i][6]; 
      third.x = arr[i][7]; 
      third.y = arr[i][8]; 
      fourth.x = arr[i][9]; 
      fourth.y = arr[i][10]; 
      if (a === first.x && b === first.y) {
        arr[i].splice(0,11);
        var newArray = new Array();
        newArray = arr;
        var nar = newArray.filter(function(x) { return (x !== (undefined || null || ''));})
        localStorage.setItem('nar',JSON.stringify(arr));
      }
    }
  }

这确实删除了数组,但是结果数组nar以一个空数组开头。

我尝试将arr的每一项推入newArray,这也会返回带有空数组的数组。

for (var i = 0; i < arr.length; i++) {
    if (arr[i][0] === "STAR_SPORTS_2-20170924-200043-210917-00142.jpg") {
      first.x = arr[i][3];
      first.y = arr[i][4]; 
      second.x = arr[i][5]; 
      second.y = arr[i][6]; 
      third.x = arr[i][7]; 
      third.y = arr[i][8]; 
      fourth.x = arr[i][9]; 
      fourth.y = arr[i][10]; 
      if (a === first.x && b === first.y) {
        arr[i].splice(0,11);
        var newArray = new Array();
        arr.forEach(function(item) {
          newArray.push(item);
        })
        localStorage.setItem('nar',JSON.stringify(newArray));
      }
    }
  }

1 个答案:

答案 0 :(得分:2)

这是我思考的最简单方法(如果我没记错的话)

arr = [["STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "TShirt", "Redshift", 267, 403, 377, 389, 385, 479, 275, 493], 
       ["STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "TShirt", "Redshift", 317, 319, 428, 325, 426, 372, 315, 366],
       ["STAR_SPORTS_2-20170924-200043-210917-00142.jpg", "TShirt", "Redshift", 425, 490, 539, 425, 526, 472, 215, 478]]
 var newArray=[];   
arr.forEach(function(d) {
if(d[0]=="STAR_SPORTS_2-20170924-200043-210917-00142.jpg" && d[3]!=267 && d[4]!=403){newArray.push(d); }
});
//localStorage.setItem('nar',JSON.stringify(newArray));
console.log(newArray);