最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Is there a fast way to delete a specific value from an array in Javascript? - Stack Overflow

programmeradmin0浏览0评论

I have an array

var array = ["google","chrome","os","windows","os"];

I want to delete the value "chrome" from the array without the array becoming a string. Is there a way to do this?

I have an array

var array = ["google","chrome","os","windows","os"];

I want to delete the value "chrome" from the array without the array becoming a string. Is there a way to do this?

Share Improve this question edited Sep 22, 2010 at 22:41 Marcel Korpel 21.8k6 gold badges62 silver badges80 bronze badges asked Sep 22, 2010 at 22:31 chromedudechromedude 4,30216 gold badges69 silver badges96 bronze badges 2
  • 18 I find it hard to believe that someone named Chromedude would want to delete Chrome from his array. – ChessWhiz Commented Sep 22, 2010 at 22:36
  • @ChessWhiz haha, did not even think of that, but it is in my array and it does need to be deleted :) – chromedude Commented Sep 22, 2010 at 22:47
Add a comment  | 

6 Answers 6

Reset to default 5

There's no faster way than finding it and then removing it. Finding it you can do with a loop or (in implementations that support it) indexOf. Removing it you can do with splice.

Live example: http://jsbin.com/anuta3/2

var array, index;
array = ["google","chrome","os","windows","os"];
if (array.indexOf) {
  index = array.indexOf("chrome");
}
else {
  for (index = array.length - 1; index >= 0; --index) {
    if (array[index] === "chrome") {
      break;
    }
  }
}
if (index >= 0) {
  array.splice(index, 1);
}

This wraps it up into a convenient function:

function remove_element(array, item) {
  for (var i = 0; i < array.length; ++i) {
    if (array[i] === item) {
      array.splice(i, 1);
      return;
    }
  }
}

var array = ["google", "chrome", "os", "windows", "os"];
remove_element(array, "chrome");

or (for browsers that support indexOf):

function remove_element(array, item) {
  var index = array.indexOf(item);
  if (-1 !== index) {
    array.splice(index, 1);
  }
}

Edit: Fixed up with === and !==.

Use the splice method of the Array class.

array.splice(1, 1);

The splice() method adds and/or removes elements to/from an array, and returns the removed element(s).

array.splice(indexOfElement,noOfItemsToBeRemoved);

in your case

   array.splice(1, 1);

You may want to remove all of the items that match your string, or maybe remove items that pass or fail some test expression. Array.prototype.filter, or a substitute, is quick and versatile:

var array= ["google","chrome","os","windows","os"],
b= array.filter(function(itm){
    return 'os'!= itm
});
alert(b)

You didn't mention whether its required to retain the indices of the remaining elements in your array or not. On the basis that you can deal with having undefined members of an array, you can do:

var array = ["google","chrome","os","windows","os"];
delete array[1];

array[1] will then be undefined.

发布评论

评论列表(0)

  1. 暂无评论