Object Doesn't Support Property Or Method 'findindex' Ie11 Javascript Issue
I have an AngularJS application that is giving me some issues in Internet Explorer 11 - In my administration area I am getting console log errors that seem to correlate with some p
Solution 1:
you can use a polyfill, in partirular this one:
// https://tc39.github.io/ecma262/#sec-array.prototype.findIndexif (!Array.prototype.findIndex) {
Object.defineProperty(Array.prototype, 'findIndex', {
value: function(predicate) {
// 1. Let O be ? ToObject(this value).if (this == null) {
thrownewTypeError('"this" is null or not defined');
}
var o = Object(this);
// 2. Let len be ? ToLength(? Get(O, "length")).var len = o.length >>> 0;
// 3. If IsCallable(predicate) is false, throw a TypeError exception.if (typeof predicate !== 'function') {
thrownewTypeError('predicate must be a function');
}
// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.var thisArg = arguments[1];
// 5. Let k be 0.var k = 0;
// 6. Repeat, while k < lenwhile (k < len) {
// a. Let Pk be ! ToString(k).// b. Let kValue be ? Get(O, Pk).// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).// d. If testResult is true, return k.var kValue = o[k];
if (predicate.call(thisArg, kValue, k, o)) {
return k;
}
// e. Increase k by 1.
k++;
}
// 7. Return -1.return -1;
}
});
}
You can find more details here
Solution 2:
I wrote a little function to do that, what you want. It expects an array as first parameter and a filter
-callback as second parameter.
var findIndex = function(arr, fn) {
return arr.reduce(function(carry, item, idx) {
if(fn(item, idx)) {
return idx;
}
return carry;
} , -1);
};
console.log(findIndex(arr, function(u) {
return u.id == userId;
}));
Solution 3:
For those who are getting this error in their Angular (>=2) application on IE, if you create the app using angular cli, you would find the file polyfills.ts in src directory or whatever is the root directory of source files created by Angular cli, find and uncomment the following import statements in polyfills.ts:
/** IE9, IE10 and IE11 requires all of the following polyfills. **/
// import'core-js/es6/symbol';
// import'core-js/es6/object';
// import'core-js/es6/function';
// import'core-js/es6/parse-int';
// import'core-js/es6/parse-float';
// import'core-js/es6/number';
// import'core-js/es6/math';
// import'core-js/es6/string';
// import'core-js/es6/date';
// import'core-js/es6/array';
// import'core-js/es6/regexp';
// import'core-js/es6/map';
// import'core-js/es6/weak-map';
// import'core-js/es6/set';
Solution 4:
You could also get the index another way, e.g.
const indexInOriginalSet = $scope.originalSet.findIndex(u => u.id == userId);
Is equivalent to:
const indexInOriginalSet = $scope.originalSet.indexOf(
originalSet.filter(u => u.id == userId)[0];
);
Except indexOf
and filter
are supported in IE9+
Post a Comment for "Object Doesn't Support Property Or Method 'findindex' Ie11 Javascript Issue"