根据字符串值从数组中删除

时间:2012-06-19 21:47:54

标签: javascript jquery

我已经定义了一个这样的数组:

var myArray = {myNewArray: ['string1' , 'string2' , 'string3']};

我想迭代数组并删除与特定字符串值匹配的元素。在jQuery / javascript中有一个干净的方法来实现这个目标吗?

或者我是否需要迭代每个元素,检查它的值,如果它的值与字符串im比较匹配,得到它的id然后使用该id从数组中删除?

5 个答案:

答案 0 :(得分:3)

Here's a JSFiddle showing your solution

var strings = ['a', 'b', 'c', 'd'];
document.write('initial data: ' + strings);
var index = 0;
var badData = 'c';
for(index = 0; index < strings.length; index++)
{
    if(strings[index] == badData)
    {
        strings.splice(index, 1);                 
    }        
}

document.write('<br>final data: '+ strings);​

答案 1 :(得分:2)

JavaScript数组有indexOf方法可用于查找元素,然后splice可用于删除它。例如:

var myNewArray = ['A', 'B', 'C'];

var toBeRemoved = 'B';
var indexOfItemToRemove = myNewArray.indexOf(toBeRemoved);
if (indexOfItemToRemove >= 0) {
    myNewArray.splice(indexOfItemToRemove, 1);
}

执行该代码后,myNewArray['A', 'C']

答案 2 :(得分:1)

您可以使用Array.filter

filteredArray = myArray.myNewArray.filter(function(el){
  return el === "string";
});

您可以在Kangax's compat tables检查兼容性。

答案 3 :(得分:0)

您可以使用$.grep

过滤数组
var myArray = {myNewArray: ['string1' , 'string2' , 'string3']};
myArray = { myNewArray: $.grep(myArray.myNewArray,function(val){
    return val !== "string1";
})};
//console.log(myArray);

答案 4 :(得分:0)

my newARR = oldArr.splice( $.inArray( removeItem , oldArr ) , 'deleteThisString');