【问题标题】:Deleting specific array element from multidimensional array?从多维数组中删除特定的数组元素?
【发布时间】:2013-07-11 19:44:10
【问题描述】:

我在循环遍历多维数组和删除特定元素数组时遇到问题。我的多维数组看起来有点像这样:

myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]];

所以如果我有数字 29。循环遍历这个数组并删除第二个元素是 29 的数组元素的最有效方法是什么?即[“迪克”,“29”]

【问题讨论】:

  • 一个for loop。根据您对数据所做的其他操作,您可以先对数组进行排序。
  • 我以为是 indexOf 和 splice 的某种组合?
  • indexOf 不会真正起作用,因为您正在寻找元素中的元素。但是您可以使用jsperf.com 轻松测试更快的方法。
  • 是的,我就是这么想的,这就是我问的原因。但我不确定 for 循环应该是什么样子才能实现这一目标?

标签: javascript arrays multidimensional-array


【解决方案1】:
var myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]];
var myNewArray = myArray.filter(function(item){ return item[1] != 29 })  

.filter 使用本机代码循环遍历您的数组。构建一个新阵列当然可能比仅仅从旧阵列中切出一部分来进行测试更昂贵。

【讨论】:

  • 那行得通,但你认为创建一个新数组的效率不如上述循环和拼接方法?
  • 这个方法比我的快很多...jsperf.com/removearrfrommulti
【解决方案2】:
myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]];
for(var i = 0; i <= myArray.length - 1; i++){
    if(myArray[i][1] == "29"){
        myArray[i].splice(0,2);
    }
}
console.log(myArray);

// returns [ [ 'Tom', '161' ], [], [ 'Harry', '46' ] ]

【讨论】:

    【解决方案3】:

    brbcoding的回答是删除数组元素的内容但不删除。这是一种解决方法:

    myArray = [["Tom", "161"], ["Dick", "29"], ["Harry", "46"]];
    document.getElementById("a").innerHTML = myArray;
    for(var i = 0; i <= myArray.length - 1; i++){
       if(myArray[i][1] == "29"){
           myArray.splice(i--,1);
    }
    }
    document.getElementById("b").innerHTML = myArray;
    console.log(myArray);
    

    https://jsfiddle.net/tmzshopping/dfdveazk/

    拼接删除一行(参数中的 1),您可以通过将 1 替换为 2 来删除 2 行。 i-- 减少数组的长度。

    【讨论】:

      【解决方案4】:
         array_name = [[1,2,3],[],['Hi','hello','world']] 
          let temp = []
          array_name.forEach(element => {
            if (element != '' || `enter condition here`) {
              temp.push(element)
            }
          });
          
          array_name = temp; // array_name = [  [1,2,3], ['Hi','hello','world'] ] 
      

      【讨论】:

        猜你喜欢
        • 2016-08-11
        • 2012-04-27
        • 2018-12-26
        • 1970-01-01
        • 2019-06-03
        • 1970-01-01
        • 2021-04-21
        相关资源
        最近更新 更多