在javascript中从多维数组中删除列
我有一个二维阵列:在javascript中从多维数组中删除列,javascript,jquery,multidimensional-array,Javascript,Jquery,Multidimensional Array,我有一个二维阵列: var array = [["a", "b", "c"],["a", "b", "c"],["a", "b", "c"]] 我想删除此数组的整列(即删除每个数组中的每三个元素) 有很多解决方案,但它们都不是javascript,所以我很难将这些情况联系起来 解决这个问题的最佳方法是什么?我不想使用.splice(),因为在某些情况下,我将删除多个列,并且.splice()方法将更改数组的长度,因此我最终会访问越界 谢谢 遍历数组并拼接每个子数组: var idx = 2;
var array = [["a", "b", "c"],["a", "b", "c"],["a", "b", "c"]]
我想删除此数组的整列(即删除每个数组中的每三个元素)
有很多解决方案,但它们都不是javascript,所以我很难将这些情况联系起来
解决这个问题的最佳方法是什么?我不想使用.splice(),因为在某些情况下,我将删除多个列,并且.splice()方法将更改数组的长度,因此我最终会访问越界
谢谢 遍历数组并拼接每个子数组:
var idx = 2;
for(var i = 0 ; i < array.length ; i++)
{
array[i].splice(idx,1);
}
.
拼接
很酷。它会在删除内容时调整数组大小,这样就不会出现空值。因此,使用splice,您只需遍历每一行并删除正确的元素
var removeCol = function(arr2d, colIndex) {
for (var i = 0; i < arr2d.length; i++) {
var row = arr2d[i];
row.splice(colIndex, 1);
}
}
var removeCol=函数(arr2d,colIndex){
对于(变量i=0;i
将
映射
功能和拼接
功能用于您的解决方案。像这样
var array = [["a", "b", "c"],["a", "b", "c"],["a", "b", "c"]];
array = array.map(function(item){
// the 0,2 tells the splice function to remove (skip) the last item in this array
return item.splice(0,2);
});
console.log(array);
// [["a", "b"],["a", "b"],["a", "b",]];
不要使用delete
从javascript数组中删除项目。原因是delete将抛出该项,但不更新内部长度变量
范例
var array = ["a", "b", "c"];
delete array[3];
console.log(array);
// ["a", "b"]
console.log(array.length);
// 3
array = array.splice(0,2);
console.log(array);
// ["a", "b"]
console.log(array.length);
// 2
使用splice
设置正确的长度并删除阵列项。尝试使用。它不会改变对原始数组的任何更改
var数组=[[“a”、“b”、“c”]、[“a”、“b”、“c”]、[“a”、“b”、“c”]
var x=array.map(函数(val){
返回值切片(0,-1);
});
console.log(x);//[[a,b],[a,b],[a,b]]
此函数不使用拼接,它会删除您想要的任何列:
function removeEl(array, remIdx) {
return array.map(function(arr) {
return arr.filter(function(el,idx){return idx !== remIdx});
});
};
希望这是您正在寻找的用于创建阵列独立副本的有用代码
在map
中使用slice
方法。以下是一个例子:
让arrayA=['a','b','c','d']
设arrayB=arrayA.map((val)=>{
返回值slice()
})
arrayB[2]='Z';
console.log('-----------数组A---------)
console.log(arrayA)
console.log('-----------数组B---------)
console.log(arrayB)
因此您将以[[“a”,“b”],[“a”,“b”],[“a”,“b”],[“a”,“b”]]结束
?是否要删除每个。。。(截断内部数组的长度)?还是要将其设置为null或空字符串?-不清楚,这个没有自动功能。JS中的“多维”数组只是数组的数组。您必须迭代父数组,并从每个子数组中删除相应的元素。“columns”是一种人性化的便利,它不会直接转化为它们在实际JS引擎中的实际工作方式。(例如,删除每三个元素会给我:[“a”、“b”]、[“a”、“b”]、[“a”、“b”]、[“a”、“b”]]您是否尝试过删除?关于他的“越界”问题,您可以按降序删除索引……也就是说,从要删除的最高索引开始,然后向下移动。
function removeEl(array, remIdx) {
return array.map(function(arr) {
return arr.filter(function(el,idx){return idx !== remIdx});
});
};