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