Skip to content

Commit

Permalink
feat: New Matreshka.Array methods: keys, values, entries
Browse files Browse the repository at this point in the history
finom committed Sep 30, 2016

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent fdb656d commit ce031ae
Showing 6 changed files with 66 additions and 1 deletion.
11 changes: 11 additions & 0 deletions src/array/_pseudonativemethods/entries.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// returns pairs like [index, value]
export default function values() {
const { length } = this;
const result = new Array(length);

for(let i = 0; i < length; i++) {
result[i] = [i, this[i]];
}

return result;
}
7 changes: 6 additions & 1 deletion src/array/_pseudonativemethods/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import createPseudoNativeMethod from './createpseudonativemethod';
import concat from './concat';
import keys from './keys';
import values from './values';
import entries from './entries';

const splitBySpaceReg = /\s+/;
const methods = { concat };
const methods = { concat, keys, values, entries };

// TODO copyWithin, fill, find, findIndex, includes

`push pop unshift shift sort reverse splice map filter slice every
some reduce reduceRight forEach join indexOf lastIndexOf`
11 changes: 11 additions & 0 deletions src/array/_pseudonativemethods/keys.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// returns indexes
export default function keys() {
const { length } = this;
const result = new Array(length);

for(let i = 0; i < length; i++) {
result[i] = i
}

return result;
}
11 changes: 11 additions & 0 deletions src/array/_pseudonativemethods/values.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// returns values
export default function values() {
const { length } = this;
const result = new Array(length);

for(let i = 0; i < length; i++) {
result[i] = this[i];
}

return result;
}
3 changes: 3 additions & 0 deletions test/spec/matreshka_array/common_spec.js
Original file line number Diff line number Diff line change
@@ -30,6 +30,9 @@ describe('Matreshka.Array class', () => {
lastIndexOf,
map,
some,
entries,
keys,
values,
push_,
pop_,
unshift_,
24 changes: 24 additions & 0 deletions test/spec/matreshka_array/native_methods_spec.js
Original file line number Diff line number Diff line change
@@ -123,4 +123,28 @@ describe('Matreshka.Array native methods', () => {
).toJSON(false)
).toEqual([1, 2, 3, 4, 5, 6]);
});

it('supports keys method', () => {
const arr = new MatreshkaArray('foo', 'bar', 'baz');

expect(
arr.keys()
).toEqual([0, 1, 2]);
});

it('supports values method', () => {
const arr = new MatreshkaArray('foo', 'bar', 'baz');

expect(
arr.values()
).toEqual(arr.toJSON(false));
});

it('supports entries method', () => {
const arr = new MatreshkaArray('foo', 'bar', 'baz');

expect(
arr.entries()
).toEqual([[0, 'foo'], [1, 'bar'], [2, 'baz']]);
});
});

0 comments on commit ce031ae

Please sign in to comment.