通过索引删除数组对象

时间:2016-06-08 10:13:27

标签: javascript arrays multidimensional-array

我正在尝试从数组中删除数组对象。首先,我循环到对象数组,如果该数组与给定的过滤器匹配,则删除该对象。以下是我尝试但不幸的是没有工作,有任何帮助,想法,线索,建议,建议吗?

$(document).ready(function(){
  
  var n_array = [{ 'name' : 'jason', 'age' : '24'},{ 'name' : 'jason2', 'age' : '20'}];

  console.log(n_array);
  
  for(var i = 0; i < n_array.length; i++){
   if(n_array[i].name==='jason'){
     n_array.splice(i,0);
   }
  }
  console.log(n_array);
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

4 个答案:

答案 0 :(得分:2)

  1. 您需要使用Array#splice而非Array#slice从数组中删除元素。

    n_array.splice(i, 1);
    
  2. &#13;
    &#13;
    var n_array = [{
        'name': 'jason',
        'age': '24'
    }, {
        'name': 'jason2',
        'age': '20'
    }];
    
    for (var i = 0; i < n_array.length; i++) {
        if (n_array[i].name === 'jason') {
            n_array.splice(i, 1);
        }
    }
    console.log(n_array);
    &#13;
    &#13;
    &#13;

    1. 您可以使用Array#filter从数组中删除元素。

      var n_array = [{
          'name': 'jason',
          'age': '24'
      }, {
          'name': 'jason2',
          'age': '20'
      }];
      
      n_array = n_array.filter(function(obj) {
          return obj.name !== 'jason';
      });
      console.log(n_array);
      
    2. &#13;
      &#13;
      var n_array = [{
          'name': 'jason',
          'age': '24'
      }, {
          'name': 'jason2',
          'age': '20'
      }];
      
      n_array = n_array.filter(function(obj) {
          return obj.name !== 'jason';
      });
      console.log(n_array);
      &#13;
      &#13;
      &#13;

答案 1 :(得分:2)

您可以使用delete

Here 是对它的引用,这正是您所寻找的。

if (n_array[i].name === 'jason') {
    delete n_array[i].name;
}
  

删除操作符从对象中删除属性。

答案 2 :(得分:0)

这可能会对你有所帮助 n_ar​​ray.slice(ⅰ);用n_array.splice(i,1);

替换它

slice()方法用于从数组中选择元素

答案 3 :(得分:0)

您的代码问题是拼接语法

拼接语法是: array.splice(index,howmany element to delete,value_item1,.....,value_itemX);

在您的代码中,您正在使用n_array.splice(i,0);所以你要给0个要删除的元素。

使它像

var n_array = [{ 'name' : 'jason', 'age' : '24'},{ 'name' : 'jason2', 'age' : '20'}];

  console.log(n_array);

  for(var i = 0; i < n_array.length; i++){
   if(n_array[i].name==='jason2'){
     n_array.splice(i,1);
   }
  }
  console.log(n_array);

希望它会有所帮助