Javascript 通过.splice()删除最后一个类似[[";1";]]的数组,为什么输出=[[]]而不是[]?
为什么我不能将最后一个数组删除为空 当移除子数组(数组中的数组)为空时,我需要Javascript 通过.splice()删除最后一个类似[[";1";]]的数组,为什么输出=[[]]而不是[]?,javascript,jquery,arrays,Javascript,Jquery,Arrays,为什么我不能将最后一个数组删除为空 当移除子数组(数组中的数组)为空时,我需要arr=[]而不是[[]]] 演示: 编辑:我只需一个一个地删除,就像 var arr=[["1"]]; arr[0].splice(0,1); // arr = [[]] 我需要arr=[[“1”,“2”] 演示:您从arr[0]中删除了“1”,因此arr[0]是[],并且arr现在包含一个空数组:[[]。 如果要删除阵列本身,请将arr,而不是arr[0]从arr[0]中删除“1”,因此arr[0]是[],并且
arr=[]
而不是[[]]]
演示:
编辑:我只需一个一个地删除,就像
var arr=[["1"]];
arr[0].splice(0,1);
// arr = [[]]
我需要arr=[[“1”,“2”]代码>
演示:您从arr[0]
中删除了“1”
,因此arr[0]
是[]
,并且arr
现在包含一个空数组:[[]
。
如果要删除阵列本身,请将arr
,而不是arr[0]从arr[0]
中删除“1”
,因此arr[0]
是[]
,并且arr
现在包含一个空阵列:[[]]
。
如果要删除阵列本身,请拼接arr
,而不是arr[0]
您正在拼接阵列上的第一个元素,该元素将从arr[0]
处的内部阵列中删除“1”
。这段代码应该删除第一个数组,而不是第一个数组的第一个元素
var arr=[["1","2"],["1","2"]];
arr[0].splice(0,1);
arr[0].splice(0,1);
// arr = [[],["1","2"]];
编辑:如果要删除空的内部数组,则需要这样检查
arr.splice(0, 1);
您正在拼接阵列上的第一个元素,该元素将从位于arr[0]
的内部阵列中删除“1”
。这段代码应该删除第一个数组,而不是第一个数组的第一个元素
var arr=[["1","2"],["1","2"]];
arr[0].splice(0,1);
arr[0].splice(0,1);
// arr = [[],["1","2"]];
编辑:如果要删除空的内部数组,则需要这样检查
arr.splice(0, 1);
在你的演示中试试这个
var arr=[["1"]];
arr[0].splice(0,1);
if (arr[0].length === 0) {
arr.splice(0,1);
}
在你的演示中试试这个
var arr=[["1"]];
arr[0].splice(0,1);
if (arr[0].length === 0) {
arr.splice(0,1);
}
Array.splice
删除一些元素并返回它们。您的数组仍将保持为数组数组
JSON.stringify
将空数组:[]
转换为“[]”
,因此空数组:[[]]
变为“[[]]”
我在jsbin代码中添加了更多示例,以说明代码的实际功能
var arr=[["1"]];
arr.splice($.inArray(arr[0],arr));
Array.splice
删除一些元素并返回它们。您的数组仍将保持为数组数组
JSON.stringify
将空数组:[]
转换为“[]”
,因此空数组:[[]]
变为“[[]]”
我在jsbin代码中添加了更多示例,以说明代码的实际功能
var arr=[["1"]];
arr.splice($.inArray(arr[0],arr));
您不能仅使用拼接来完成此项工作,我可以提出以下建议:
var arr=[["1"]];
var elem = arr[0].splice(0,1);
$("body").append(JSON.stringify(arr));
$("body").append(JSON.stringify(elem));
$("body").append(JSON.stringify([[]]));
然后使用arr.removeOne(0,0)
第一个参数是主数组索引,第二个参数是要删除的子数组元素的索引
编辑:还有另一种方法:
Array.prototype.removeOne = function(i, j) {
if(this[i] == undefined) return this;
this[i].splice(j,1);
if (this[i].length == 0) this.splice(i,1);
return this;
};
您不能仅使用拼接来完成此项工作,我可以提出以下建议:
var arr=[["1"]];
var elem = arr[0].splice(0,1);
$("body").append(JSON.stringify(arr));
$("body").append(JSON.stringify(elem));
$("body").append(JSON.stringify([[]]));
然后使用arr.removeOne(0,0)
第一个参数是主数组索引,第二个参数是要删除的子数组元素的索引
编辑:还有另一种方法:
Array.prototype.removeOne = function(i, j) {
if(this[i] == undefined) return this;
this[i].splice(j,1);
if (this[i].length == 0) this.splice(i,1);
return this;
};
arr.splice(0,1)
?arr.splice(0,1)
您正在移除“内部”阵列的第一项。您要拼接“外部”数组的第一项。我要逐个删除示例。[[“1”,“2”]]
@undefined@undefined这是我的一个例子。splice()返回数组,数组中的元素不在参数之外,因此不会更改数组的原始结构arr.splice(0,1)
?arr.splice(0,1)
您正在删除“内部”数组的第一项。您要拼接“外部”数组的第一项。我要逐个删除示例。[[“1”,“2”]]
@undefined@undefined这是我最好的方法()返回数组,数组中没有参数之外的元素,因此不会改变arrayOk的原始结构,我必须检查长度?没有任何其他js函数像.splice
?好的,我必须检查长度?不是像.splice
?arr.splice($.inArray(arr[1],arr))这样的任何其他js函数;如果您使用此ypu,我将看到您的答案…请快速尝试,它工作正常…arr.splice($.inArray(arr[1],arr));如果你用这个ypu,我会看到你的答案…快试试它,它工作正常。。。