Hướng dẫn what can i use instead of indexof in javascript? - tôi có thể sử dụng gì thay vì indexof trong javascript?

Tôi có chuỗi là this is test for alternative. Những gì tôi muốn tìm là vị trí của for. Tôi biết tôi có thể đã làm điều này bằng cách sử dụng

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
0, tuy nhiên tôi không muốn sử dụng
function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
1.

Bất kỳ ý tưởng/ đề xuất cho sự thay thế?

JSfiddle

Một lần nữa, tôi chỉ cần được thực hiện bởi JavaScript. Không có jquery .. thật đáng buồn :(Javascript only. No jQuery.. sadly :(

Hướng dẫn what can i use instead of indexof in javascript? - tôi có thể sử dụng gì thay vì indexof trong javascript?

Mark Fox

8,5439 Huy hiệu vàng53 Huy hiệu bạc73 Huy hiệu đồng9 gold badges53 silver badges73 bronze badges

Đã hỏi ngày 2 tháng 12 năm 2012 lúc 12:16Dec 2, 2012 at 12:16

Fahim Parkarfahim ParkarFahim Parkar

30.3K41 Huy hiệu vàng157 Huy hiệu bạc274 Huy hiệu đồng41 gold badges157 silver badges274 bronze badges

4

.search()?

"this is test for alternative".search("for")
>> 13

Đã trả lời ngày 2 tháng 12 năm 2012 lúc 12:21Dec 2, 2012 at 12:21

3

Bạn có thể mã hóa chỉ mục của riêng bạn? Bạn lặp trên chuỗi nguồn và trên mỗi ký tự bạn kiểm tra xem nó có thể là từ được tìm kiếm của bạn không.

Một phiên bản chưa được kiểm tra để cung cấp cho bạn một ý tưởng:

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}

Đã trả lời ngày 2 tháng 12 năm 2012 lúc 12:24Dec 2, 2012 at 12:24

Hướng dẫn what can i use instead of indexof in javascript? - tôi có thể sử dụng gì thay vì indexof trong javascript?

Koopajahkoopajahkoopajah

22.2K9 Huy hiệu vàng72 Huy hiệu bạc101 Huy hiệu đồng9 gold badges72 silver badges101 bronze badges

Trong hầu hết các ngôn ngữ,

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 trả về -1 nếu không tìm thấy phần tử, IMO có hiệu quả một chút. Sự thay thế tốt nhất cho điều này trong ngôn ngữ lập trình của bạn là gì? Có bất kỳ chức năng nào sẽ chỉ trả về giá trị boolean cho biết nếu phần tử được tìm thấy?

9

Phương thức

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 trả về chỉ mục đầu tiên mà tại đó một phần tử nhất định có thể được tìm thấy trong mảng hoặc -1 nếu nó không có.
function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2
method returns the first index at which a given element can be found in the array, or -1 if it is not present.

Thử nó

Cú pháp

indexOf(searchElement)
indexOf(searchElement, fromIndex)

Thông số

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
4

Phần tử để định vị trong mảng.

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
5 Tùy chọnOptional

Chỉ mục để bắt đầu tìm kiếm tại. Nếu chỉ mục lớn hơn hoặc bằng chiều dài của mảng, -1 được trả về, điều đó có nghĩa là mảng sẽ không được tìm kiếm. Nếu giá trị chỉ mục được cung cấp là một số âm, nó được lấy làm phần bù từ cuối mảng. Lưu ý: Nếu chỉ mục được cung cấp là âm, mảng vẫn được tìm kiếm từ trước đến sau. Nếu chỉ mục được cung cấp là 0, thì toàn bộ mảng sẽ được tìm kiếm. Mặc định: 0 (toàn bộ mảng được tìm kiếm).

Giá trị trả lại

Chỉ số đầu tiên của phần tử trong mảng; -1 nếu không tìm thấy.-1 if not found.

Sự mô tả

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 so sánh
function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
4 với các phần tử của mảng bằng cách sử dụng bình đẳng nghiêm ngặt (cùng một phương pháp được sử dụng bởi toán tử
function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
8 hoặc ba công bằng).

Phương pháp

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 bỏ qua các khe trống trong các mảng thưa thớt.

Phương pháp

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 là chung chung. Nó chỉ mong đợi giá trị
indexOf(searchElement)
indexOf(searchElement, fromIndex)
1 có thuộc tính
indexOf(searchElement)
indexOf(searchElement, fromIndex)
2 và các thuộc tính được khóa.

Ví dụ

Sử dụng indexof ()

Ví dụ sau sử dụng

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 để định vị các giá trị trong một mảng.

const array = [2, 9, 9];
array.indexOf(2);     // 0
array.indexOf(7);     // -1
array.indexOf(9, 2);  // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0

Tìm thấy tất cả các sự xuất hiện của một yếu tố

const indices = [];
const array = ['a', 'b', 'a', 'c', 'a', 'd'];
const element = 'a';
let idx = array.indexOf(element);
while (idx !== -1) {
  indices.push(idx);
  idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]

Tìm kiếm nếu một phần tử tồn tại trong mảng hay không và cập nhật mảng

function updateVegetablesCollection (veggies, veggie) {
  if (veggies.indexOf(veggie) === -1) {
    veggies.push(veggie);
    console.log(`New veggies collection is: ${veggies}`);
  } else {
    console.log(`${veggie} already exists in the veggies collection.`);
  }
}

const veggies = ['potato', 'tomato', 'chillies', 'green-pepper'];

updateVegetablesCollection(veggies, 'spinach');
// New veggies collection is: potato,tomato,chillies,green-pepper,spinach
updateVegetablesCollection(veggies, 'spinach');
// spinach already exists in the veggies collection.

Sử dụng indexof () trên các mảng thưa thớt

Bạn không thể sử dụng

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 để tìm kiếm các khe trống trong các mảng thưa thớt.

console.log([1, , 3].indexOf(undefined)); // -1

Gọi indexof () trên các đối tượng không phải là

Phương thức

function myIndexOf(myString, word) {
    var len = myString.length;
    var wordLen = word.length;
    for(var i = 0; i < len; i++) {
        var j = 0;
        for(j = 0; j < wordLen; j++) {
            if(myString[i+j] != word[j]) {
                break;
            }
        }
        if(j == wordLen) {
            return i;
        }
    }

    return -1;
}
2 đọc thuộc tính
indexOf(searchElement)
indexOf(searchElement, fromIndex)
2 của
indexOf(searchElement)
indexOf(searchElement, fromIndex)
1 và sau đó truy cập vào từng chỉ mục số nguyên.

const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
};
console.log(Array.prototype.indexOf.call(arrayLike, 2));
// 0
console.log(Array.prototype.indexOf.call(arrayLike, 5));
// -1

Thông số kỹ thuật

Sự chỉ rõ
Thông số kỹ thuật ngôn ngữ Ecmascript # sec-array.prototype.indexof
# sec-array.prototype.indexof

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Chỉ số nào tốt hơn hoặc bao gồm?

Tôi sẽ đề xuất sử dụng phương thức bao gồm () để kiểm tra xem phần tử có mặt trong mảng không.Nếu bạn cần biết phần tử nằm ở đâu trong mảng, bạn cần sử dụng phương thức indexof ().If you need to know where the element is in the array, you need to use the indexOf() method.

Chỉ mục nhanh hơn hoặc bao gồm là gì?

Lịch sử.Indexof đã được tạo ra trước khi bao gồm.Có vẻ như sự khác biệt trong hiệu suất không phải là rõ ràng.Firefox di động của tôi cho thấy chỉ mục thực sự nhanh hơn.indexOf is actually faster.

Sự khác biệt giữa Indexof và FindIndex là gì?

FindIndex - Trả về chỉ mục của phần tử đầu tiên trong mảng trong đó vị ngữ là đúng và -1 nếu không. Indexof - Trả về chỉ số của lần xuất hiện đầu tiên của một giá trị trong một mảng. indexOf - Returns the index of the first occurrence of a value in an array.

Sự khác biệt giữa indexof và tìm kiếm trong javascript là gì?

Indexof sử dụng nghĩa đen để phù hợp, nhưng có một offset.Search không trả về một phần bù. Search does return an offset.