我在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));
}
}
}
答案 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);