[英]Delete elements of array that end with certain strings in JavaScript
我有一个数组,我需要删除以某个字符串结尾的每个元素。
var arr = ["strawberry", "apple", "blueberry"];
我需要删除所有以berry结尾的元素。 数组应该像这样结束:
var arr = ["apple"];
您可以使用Array.prototype.filter创建一个新的、过滤的数组:
var newArr = arr.filter(function(arrayElement){
return arrayElement.indexOf("berry") != arrayElement.length - "berry".length;
});
从文档:
filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
因此,提供的回调应该返回true
以将元素投影到输出数组中,或者返回false
以省略它。 您如何实施测试取决于您。 我提供的测试有点幼稚。
要查找以某物结尾的项目,我们使用something$
( $
表示字符串的结尾或行的结尾)。 如果我们否定这个regex
表达式,我们可以找到不以该字符串结尾的项目。
另一方面,javascript 中的数组有一个filter
函数,它根据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);
你可以使用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']
var fruits = ["strawberry", "apple", "blueberry"];
for(var i=0;i<3;i++){
var a = fruits[i].indexOf("berry") > -1;
document.getElementById("demo").innerHTML = a;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.