Kode ini tidak berfungsi di penjelajah internet. Ada alternatif lain?
"abcde".includes("cd")
Kode ini tidak berfungsi di penjelajah internet. Ada alternatif lain?
"abcde".includes("cd")
Jawaban:
String.prototype.includes adalah, saat Anda menulis, tidak didukung di Internet Explorer (atau Opera).
Sebagai gantinya Anda bisa menggunakan String.prototype.indexOf. #indexOfmengembalikan indeks dari karakter pertama dari substring jika ada dalam string, jika tidak maka akan dikembalikan -1. (Sama seperti Array yang setara)
var myString = 'this is my string';
myString.indexOf('string');
// -> 11
myString.indexOf('hello');
// -> -1
MDN memiliki polyfill untuk includesdigunakan indexOf: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill
EDIT: Opera mendukung includesmulai versi 28 .
EDIT 2: Versi Edge saat ini mendukung metode ini. (per 2019)
Boolean, kita bisa(myString.indexOf('string') > -1) // to get a boolean true or false
Atau taruh saja ini dalam file Javascript dan semoga harimu menyenangkan :)
String.prototype.includes = function (str) {
var returnValue = false;
if (this.indexOf(str) !== -1) {
returnValue = true;
}
return returnValue;
}
for...in, itu akan mengulangi String.prototype.includesjika didefinisikan seperti ini.
return this.indexOf(str) !== -1;
include () tidak didukung oleh sebagian besar browser. Pilihan Anda bisa digunakan
-polyfill dari MDN https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes
atau untuk digunakan
-Indeks()
var str = "abcde";
var n = str.indexOf("cd");
Yang memberi Anda n = 2
Ini didukung secara luas.
for...in! , ini akan berulang String.prototype.includesjika Anda mendefinisikannya seperti itu.
Masalah:
Coba jalankan di bawah ini (tanpa solusi) dari Internet Explorer dan lihat hasilnya.
console.log("abcde".includes("cd"));
Larutan:
Sekarang jalankan solusi di bawah ini dan periksa hasilnya
if (!String.prototype.includes) {//To check browser supports or not
String.prototype.includes = function (str) {//If not supported, then define the method
return this.indexOf(str) !== -1;
}
}
console.log("abcde".includes("cd"));
Saya mengalami masalah yang sama saat bekerja di Angular 5. Untuk membuatnya bekerja secara langsung tanpa menulis sendiri polyfill, cukup tambahkan baris berikut ke file polyfills.ts:
import "core-js/es7/array"
Juga, tsconfig.jsonbagian lib mungkin relevan:
"lib": [
"es2017",
"dom"
],
Untuk bereaksi:
import 'react-app-polyfill/ie11';
import 'core-js/es5';
import 'core-js/es6';
import 'core-js/es7';
Penyelesaian masalah untuk - termasuk (), find (), dan seterusnya ..
Jika Anda ingin tetap menggunakan Array.prototype.include()javascript, Anda dapat menggunakan skrip ini:
github-script-ie-include
Yang mengubah fungsi include () menjadi match () secara otomatis jika fungsi tersebut mendeteksi IE.
Opsi lainnya adalah selalu menggunakanstring.match(Regex(expression))
Ini bekerja untuk saya:
function stringIncludes(a, b) {
return a.indexOf(b) !== -1;
}
Anda dapat melakukan hal yang sama dengan !! dan ~ operator
var myString = 'this is my string';
!!~myString.indexOf('string');
// -> true
!!~myString.indexOf('hello');
// -> false
berikut penjelasan dari kedua operator tersebut (!! dan ~)
Apakah yang !! (bukan) operator di JavaScript?
https://www.joezimjs.com/javascript/great-mystery-of-the-tilde/