按第一个字符进行数组搜索

Array Search by first character

本文关键字:数组 搜索 第一个 字符      更新时间:2024-03-09

是否有任何方法可以在不循环数组的情况下搜索具有以特定字符开头的元素的javascript数组。

示例:

   var fruits = ["Banana", "Orange", "Apple", "Mango"];

从这个数组中,我想检查任何以字符"M"开头的元素。注意:不应循环数组。

您可以使用.filter函数,但在内部它仍然会使用循环。事实上,没有循环就无法检查完整的数组。

fruits.filter(function(item) { return item.substring(0, 1) == 'M'; });

如果数组不包含对象或值不包含,,则使用可以加入数组以创建字符串,然后使用正则表达式

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var exists = /,M/.test(fruits.join());
console.log(exists)

唯一能做到这一点的方法是将它们作为定义索引的关联数组的子部分。

因此,当你初始化/加载数组时,你就定义了其中的字符。这样,您只需要在init处循环或加载值的函数

mainIndex = new Array();
while(loadingarray.hasNext()) {
    var next = loadingarray.getNext();
    var indexchar = next.charAt(0);
    if(typeof mainIndex[indexchar] == 'undefined') {
        mainIndex[indexchar] = new Array();
    }
mainIndex[indexchar].push(next);
}

您也可以这样做:

var exists = fruits.some(function(element){return element[0] === "M"});

关于.some()的更多信息,请点击此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

使用此代码

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var match = fruits.filter(function (item, index, array) {
    if(item.charAt(0) === "M")
         console.log(item);
});

http://jsfiddle.net/a02z99xg/4/

您可以使用迭代方法filter(),如下所示:

var match = fruits.filter(function (item, index, array) {
    return item.charAt(0) === "M";
});

https://jsfiddle.net/lemoncurry/tydrgmoa/

没有内置函数,创建自定义函数。