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

Javascript 按第一个字符进行数组搜索,javascript,arrays,Javascript,Arrays,是否有任何方法可以搜索包含以特定字符开头的元素的javascript数组而不循环数组 例如: var fruits = ["Banana", "Orange", "Apple", "Mango"]; 从这个数组中,我想检查任何以字符“M”开头的元素。 注意:不应循环数组。如果数组不包含对象或值不包含,则使用可以加入数组以创建字符串,然后使用正则表达式 var fruits = ["Banana", "Orange", "Apple", "Mango"]; var exists = /,M

是否有任何方法可以搜索包含以特定字符开头的元素的javascript数组而不循环数组

例如:

   var fruits = ["Banana", "Orange", "Apple", "Mango"];
从这个数组中,我想检查任何以字符“M”开头的元素。
注意:不应循环数组。

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

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

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

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

无内置函数,创建自定义函数。

无内置函数,创建自定义函数。

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

fruits.filter(function(item) { return item.substring(0, 1) == 'M'; });
您可以使用函数,但在内部它仍将使用循环。事实上,没有循环就无法检查完整数组

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

您可以像这样使用迭代方法filter():

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

您可以像这样使用迭代方法filter():

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

唯一的方法是将它们作为定义索引的关联数组的子部分

因此,在初始化/加载数组时,就可以定义其中包含哪些字符。 这样,您只需在值的init或load函数处循环

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);
}

唯一的方法是使它们成为定义索引的关联数组的子部分

因此,在初始化/加载数组时,就可以定义其中包含哪些字符。 这样,您只需在值的init或load函数处循环

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()
的详细信息,请参见:

您也可以这样做:

var exists = fruits.some(function(element){return element[0] === "M"});
有关
.some()
的详细信息,请点击此处:

使用此代码

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

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


没有办法。需要使用loop..@java seekar不带作业here@Java-在真实的项目中,并没有人限制你们使用循环。没有人会说在我的项目中你不能使用loop@Java-Seekar是否有人限制您在这种情况下使用循环?如果是,请他们提供解决方案,并提供您问题的答案,我们也对不使用循环的解决方案感到好奇。我发布了一个解决方案,以及不使用循环的可能原因。但是,如果是这样的话,我不会使用javascript。我肯定会实现某种类型的数据库存储(无论是服务器端和ajax还是浏览器数据库存储对象),这是不可能的。需要使用loop..@java seekar不带作业here@Java-在真实的项目中,并没有人限制你们使用循环。没有人会说在我的项目中你不能使用loop@Java-Seekar是否有人限制您在这种情况下使用循环?如果是,请他们提供解决方案,并提供您问题的答案,我们也对不使用循环的解决方案感到好奇。我发布了一个解决方案,以及不使用循环的可能原因。但是,如果是这样的话,我不会使用javascript。我最肯定的是实现某种类型的数据库存储(无论是服务器端和ajax还是浏览器数据库存储对象),但我猜
join()
使用循环。但我猜
join()
使用循环。1用于指向过滤器后面的现实,我的意思是它也使用loop1指向过滤器后面的现实,我的意思是它也使用循环。你能创建一个自定义函数来做同样的事情吗?你能创建一个自定义函数来做同样的事情吗?事实上,哈希表是满足这个问题(相当模糊)要求的唯一方法。有时哈希表是存储东西的方法。我们当然不知道这个数组有多大。200万项阵列可能存在性能问题。我们不知道。但这是我能猜到他不想循环的唯一原因。可能在一个数组中访问数百万个客户数据,然后发现一个客户:P仍然,必须加载所有数据,以便至少有一个循环级别。。。但是,嘿,内存是便宜的:我实际上认为这个问题可能是家庭作业衍生出来的——尽管如此,还是一个有趣的问题。的确,哈希表并不能保证在发生冲突的情况下没有循环。看看op的其他问题,他可能比家庭作业高一级。不过,对于这个问题,使用浏览器内部数据库对象的数据库存储可能比让它驻留在内存中更好。事实上,哈希表是满足这个问题(相当模糊)要求的唯一方法。有时哈希表是存储东西的方法。我们当然不知道这个数组有多大。200万项阵列可能存在性能问题。我们不知道。但这是我能猜到他不想循环的唯一原因。可能在一个数组中访问数百万个客户数据,然后发现一个客户:P仍然,必须加载所有数据,以便至少有一个循环级别。。。但是,嘿,内存是便宜的:我实际上认为这个问题可能是家庭作业衍生出来的——尽管如此,还是一个有趣的问题。的确,哈希表并不能保证在发生冲突的情况下没有循环。看看op的其他问题,他可能比家庭作业高一级。不过,对于这个问题,使用浏览器内部数据库对象的数据库存储可能比让它驻留在内存中更好。这样它是持久的,不必每次都加载。