Add Array#entries (as implemented in ES 6)

This commit is contained in:
Mariusz Nowak
2014-04-29 18:07:22 +02:00
parent 9e98cd196c
commit e49701c394
11 changed files with 57 additions and 0 deletions
+6
View File
@@ -51,6 +51,7 @@ It's about properties introduced with ES6 and those that have been updated in ne
- `Array.of` -> `require('es5-ext/array/of')`
- `Array.prototype.concat` -> `require('es5-ext/array/#/concat')`
- `Array.prototype.copyWithin` -> `require('es5-ext/array/#/copy-within')`
- `Array.prototype.entries` -> `require('es5-ext/array/#/entries')`
- `Array.prototype.fill` -> `require('es5-ext/array/#/fill')`
- `Array.prototype.filter` -> `require('es5-ext/array/#/filter')`
- `Array.prototype.find` -> `require('es5-ext/array/#/find')`
@@ -222,6 +223,11 @@ _egal_ version of `indexOf` method. [_SameValueZero_](http://people.mozilla.org/
_egal_ version of `lastIndexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
#### arr.entries() _(es5-ext/array/#/entries)_
[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.entries).
Return iterator object, where each iterated value represents array of index and corresponding value.
#### arr.exclusion([…lists]]) _(es5-ext/array/#/exclusion)_
Returns the array of elements that are found only in one of the lists (either context list or list provided in arguments).
+6
View File
@@ -0,0 +1,6 @@
'use strict';
if (!require('./is-implemented')()) {
Object.defineProperty(Array.prototype, 'entries', { value: require('./shim'),
configurable: true, enumerable: false, writable: true });
}
+4
View File
@@ -0,0 +1,4 @@
'use strict';
module.exports = require('./is-implemented')() ?
Array.prototype.entries : require('./shim');
+15
View File
@@ -0,0 +1,15 @@
'use strict';
module.exports = function () {
var arr = [1, 'foo'], iterator, result;
if (typeof arr.entries !== 'function') return false;
iterator = arr.entries();
if (!iterator) return false;
if (typeof iterator.next !== 'function') return false;
result = iterator.next();
if (!result || !result.value) return false;
if (result.value[0] !== 0) return false;
if (result.value[1] !== 1) return false;
if (result.done !== false) return false;
return true;
};
+4
View File
@@ -0,0 +1,4 @@
'use strict';
var ArrayIterator = require('es6-iterator/array');
module.exports = function () { return new ArrayIterator(this, 'key+value'); };
+1
View File
@@ -10,6 +10,7 @@ module.exports = {
diff: require('./diff'),
eIndexOf: require('./e-index-of'),
eLastIndexOf: require('./e-last-index-of'),
entries: require('./entries'),
exclusion: require('./exclusion'),
fill: require('./fill'),
filter: require('./filter'),
+1
View File
@@ -26,6 +26,7 @@
"url": "git://github.com/medikoo/es5-ext.git"
},
"dependencies": {
"es6-iterator": "~0.1.1",
"es6-symbol": "0.1.x"
},
"devDependencies": {
+5
View File
@@ -0,0 +1,5 @@
'use strict';
var isImplemented = require('../../../../array/#/entries/is-implemented');
module.exports = function (a) { a(isImplemented(), true); };
+3
View File
@@ -0,0 +1,3 @@
'use strict';
module.exports = require('./shim');
+3
View File
@@ -0,0 +1,3 @@
'use strict';
module.exports = function (t, a) { a(typeof t(), 'boolean'); };
+9
View File
@@ -0,0 +1,9 @@
'use strict';
exports.__generic = function (t, a) {
var iterator = t.call(this);
a.deep(iterator.next(), { value: [0, '1'], done: false });
a.deep(iterator.next(), { value: [1, '2'], done: false });
a.deep(iterator.next(), { value: [2, '3'], done: false });
a.deep(iterator.next(), { value: undefined, done: true });
};