-
-
Notifications
You must be signed in to change notification settings - Fork 283
Expand file tree
/
Copy pathinvert.js
More file actions
44 lines (31 loc) · 1.59 KB
/
invert.js
File metadata and controls
44 lines (31 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Let's define how invert should work
// Given an object
// When invert is passed this object
// Then it should swap the keys and values in the object
// E.g. invert({x : 10, y : 20}), target output: {"10": "x", "20": "y"}
// function invert(obj) {
// const invertedObj = {};
// for (const [key, value] of Object.entries(obj)) {
// invertedObj.key = value;
// }
// return invertedObj;
// }
// a) What is the current return value when invert is called with { a : 1 }
// my guess is that it will return { key: 1 } because the code is setting the property "key" on the invertedObj to the value of 1.
// b) What is the current return value when invert is called with { a: 1, b: 2 }
// { key : 2 } because the loop will overwrite the "key" property with the value of 2 after processing the second key-value pair.
// c) What is the target return value when invert is called with {a : 1, b: 2}
// target output: {1: "a", 2: "b"}
// d) What does Object.entries return? Why is it needed in this program?
// Object.entries returns an array of arrays from an object. It's needed to iterate over each property in the object.
// e) Explain why the current return value is different from the target output
// because the current implementation is using key as a literal property name instead of using the value of the variable key with bracket notation.
// f) Fix the implementation of invert (and write tests to prove it's fixed!)
function invert(obj) {
const invertedObj = {};
for (const [key, value] of Object.entries(obj)) {
invertedObj[value] = key;
}
return invertedObj;
}
module.exports = invert;