我有一个包含字符串的数组。
var js_userBoxName = new Array();
如果字符串包含应该显示的单词“foo”,我想搜索数组的元素。
因此,例如我的数组包含单词 {fooofy, foofa, foo, awtsy},将显示 foofy、foofa 和 foo,因为它们都包含单词 foo。
我有一个包含字符串的数组。
var js_userBoxName = new Array();
如果字符串包含应该显示的单词“foo”,我想搜索数组的元素。
因此,例如我的数组包含单词 {fooofy, foofa, foo, awtsy},将显示 foofy、foofa 和 foo,因为它们都包含单词 foo。
看看Array.filter
方法:
var arr = ['foofy', 'foofa', 'foo', 'awtsy'];
var fooItems = arr.filter(function (item) {
return item.indexOf('foo') >= 0;
});
// Yields ['foofy', 'foofa', 'foo']
链接的 MDN 页面包含不支持它的浏览器的 polyfill。如果你碰巧使用 jQuery,你可以使用$.grep
:
var arr = ['foofy', 'foofa', 'foo', 'awtsy'];
var fooItems = $.grep(arr, function (item) {
return item.indexOf('foo') >= 0;
});
注意:良好的性能提示是在迭代数组时始终缓存数组的长度,而不是在每次循环执行时重新计算它。len = js_userBoxName.length
http://jsperf.com/caching-array-length/4
function () {
for(var i = 0, len = js_userBoxName.length; i < len; i++){
if(typeof js_userBoxName[i] === 'string'){
if(js_userBoxName[i].indexOf('foo') == -1)
return true;
}
}
return false;
}
下面的函数应该可以解决问题,它只使用标准的 acme 脚本元素
function Find (myarray, searchterm){
for (var i=0, len = myarray.length; i<len; i += 1){
if (typeof(myarray[i]) === 'string' && myarray[i].search(searchterm) !== -1){
// print or whatever
//hint use a callback here that you pass in as an additional arugment
}
}
}
如果您需要检查更复杂的内容,使用搜索允许您使用正则表达式
你也可以试试这个:
var myarray = ["foofy", "foofa", "foo", "awtsy"];
var searched_string = "foo";
var foundmatch = [];
for(i=0; i < myarray.length; i++){
if(myarray[i].match(searched_string)){
foundmatch.push(myarray[i]);
}
}
alert(foundmatch);
以下应该有效:
var myArray = ['foofy', 'foofa', 'foo', 'awtsy'];
for ( var i = 0; i < myArray.length; i++ ) {
if ( myArray[i].contains('foo') )
console.log(myArray[i]);
}
印刷品: foofy foofa foo
注意:“awtsy”不包含模式 foo