我有一个数组,我需要删除以某个字符串结尾的每个元素。
var arr = ["strawberry", "apple", "blueberry"];
我需要删除以 berry 结尾的每个元素。数组应该像这样结束:
var arr = ["apple"];
答案 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;
}