删除以JavaScript中的某些字符串结尾的数组元素

时间:2015-08-17 16:12:42

标签: javascript arrays element

我有一个数组,我需要删除以某个字符串结尾的每个元素。

var arr = ["strawberry", "apple", "blueberry"];

我需要删除以 berry 结尾的每个元素。数组应该像这样结束:

var arr = ["apple"]; 

4 个答案:

答案 0 :(得分:4)

您可以使用Array.prototype.filter创建新的已过滤数组:

var newArr = arr.filter(function(arrayElement){
    return arrayElement.indexOf("berry") != arrayElement.length - "berry".length;
});

来自文档:

  

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

因此,提供的回调应返回true以将元素投影到输出数组中,或false以省略它。您如何实施测试取决于您。我提供的测试有些天真。

答案 1 :(得分:3)

要查找以我们使用something$的内容结尾的项目($表示字符串的结尾或行尾)。如果我们否定这个regex表达式,我们可以找到不以该字符串结尾的项目 另一方面,javascript中的数组具有filter函数,该函数基于过滤函数过滤数组项。通过组合这两个,我们可以创建一个只包含我们想要的新数组。

 
var arr = ["strawberry", "apple", "blueberry"];      
var endsWith = "berry"
var regx = new RegExp(endsWith+"$");
var result = arr.filter(function(item){return !regx.test(item);})
alert(result);

答案 2 :(得分:0)

您可以将Array.prototype.filter()String.prototype.endsWith()结合使用

// Declaring array of fruits
let arr = ['strawberry', 'apple', 'blueberry'];

// Filtering elements that are not ending with 'berry'
let filtered = arr.filter(fruit => !fruit.endsWith('berry'));

console.log(filtered);
// ['apple']

答案 3 :(得分:-1)

var fruits = ["strawberry", "apple", "blueberry"];
for(var i=0;i<3;i++){
var a = fruits[i].indexOf("berry") > -1;
    document.getElementById("demo").innerHTML = a;
}