Merge pull request #689 from hszeto/dig

Dig
This commit is contained in:
Angelos Chalaris
2018-07-14 10:34:06 +03:00
committed by GitHub
4 changed files with 78 additions and 0 deletions

15
test/dig/dig.js Normal file
View File

@ -0,0 +1,15 @@
const dig = (obj, target) =>
target in obj
? obj[target]
: Object
.values(obj)
.reduce((acc, val) => {
if (acc !== undefined) {
return acc;
}
if (typeof val === "object") {
return dig(val, target);
}
}, undefined);
module.exports = dig;

32
test/dig/dig.test.js Normal file
View File

@ -0,0 +1,32 @@
const expect = require("expect");
const dig = require("./dig.js");
const data = {
level1:{
level2:{
level3: "some data",
level3f: false,
level3a: [1,2,3,4]
}
}
};
test("dig is a Function", () => {
expect(dig).toBeInstanceOf(Function);
});
test("Dig target success", () => {
expect(dig(data, "level3")).toEqual("some data");
});
test("Dig target with falsey value", () => {
expect(dig(data, "level3f")).toEqual(false);
});
test("Dig target with array", () => {
expect(dig(data, "level3a")).toEqual([1,2,3,4]);
});
test("Unknown target return undefined", () => {
expect(dig(data, "level4")).toEqual(undefined);
});