我正在尝试对我的数组执行一个简单的indexOf问题是它只是在我的数组节点中查找整个文本
var arr = new Array();
arr.push("hello world");
var result = arr.indexOf("hello");
我的问题是我得到的结果是-1有没有任何方法可以让indexOf在没有另一个循环的情况下在每个数组元素中搜索?
感谢
否,不可能使用arr.indexOf来搜索子字符串,必须使用循环。
尽管您可以将方法添加到数组中以调用它来查找数组中的子字符串。
实时演示
函数定义
arr.containsIndexOf = function(str) {
for(var i = 0; i < arr.length; i++){
if(arr[i].indexOf(str) != -1)
return i;
}
return -1;
}
函数调用
arr.containsIndexOf("hello")
就像Adil说的那样,你需要使用一个循环。
var myArr= new Array();
myArr.push("hello world");
function searchArr(txt, arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].toLowerCase().indexOf(txt.toLowerCase()) > -1) {
return i
}
}
}
像这个一样使用这个功能
searchArr("hello",myArr); //returns 0
您可能有一个包含多个"hello"的数组,所以您需要知道它们都在哪里。
myArr.push("hello world")
myArr.push("hello Pluto");
myArr.push("hi sun");
myArr.push("Hello Moon");
function searchArr(txt, arr) {
var arrList = new Array();
for (var i = 0; i < arr.length; i++) {
if (arr[i].toLowerCase().indexOf(txt.toLowerCase()) > -1) {
arrList.push(i);
}
}
return arrList
}
searchArr("hello",myArr); //returns [0, 1, 3]
正如@Adil所说,不,你不能使用Array
的indexOf
函数来查找子字符串,但你可以使用String
的indexOf
来查找子串:
示例:
var mystr = 'hello world';
var index = mystr.indexOf('hello');
举你的例子,你应该尝试一下这样的东西:
var arr = new Array();
arr.push("hello world");
var mystr = arr[0]; // this is String object
var index = mystr.indexOf("hello");
文档:
string.indexOf
的数组索引
试试这个:
var arr = new Array();
arr.push("hello world");
var result = arr[0].indexOf("hello");
因为这是一个数组,所以您需要使用它的索引来访问它。
您将整个字符串hello world
推送到数组的一个索引中,因此indexOf
只有在使用时才能工作,因为它需要匹配该数组索引中的整个项。
var result = arr.indexOf("hello world");
一种方法是这样做的:
var arr = new Array();
arr.push("hello world");
for(var i = 0; i < arr.length; i++){
if(arr[i].indexOf('hello') != -1)
return i;
}
请参阅此jsfiddle
// Get index of the first matching item in an array
// or -1 if the item is not found
function SearchArray(arr, txt) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].indexOf(txt) > -1) {
return i;
}
}
return -1;
}
函数调用:
var someArray = new Array();
someArray.push("hello world");
SearchArray(someArray, "hello");