ajkelso / js-data-structures-objects-lab-onl01-seng-pt-061520

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Objects Lab

Problem Statement

We covered the concepts of Objects in JavaScript. Now it's time to put the concepts into practice.

Learning Goals

  • Create Objects
  • Perform operations on Objects

Instructions

Follow the steps below, running learn as you go to get additional information from the tests. To start, define a driver variable and assign it to an Object. Various updates will be applied to this variable (destructively and non-destructively) in this lab.

You'll be writing four functions:

  • updateDriverWithKeyAndValue()- this function should take in three arguments: a driver Object, a key and a value. This function should not mutate the driver and should return a new driver that has an updated value for the key passed in.
  • destructivelyUpdateDriverWithKeyAndValue() - this function should work the same as updateDriverWithKeyAndValue() but it should mutate the driver parameter passed in.
  • deleteFromDriverByKey() - this function should take in a driver Object and a key. It should delete the key/value pair for the key that was passed in from the driver Object. This should all not actually mutate the driver passed in.
  • destructivelyDeleteFromDriverByKey() - this function should work the same as deleteFromDriverByKey() but it should mutate the driver passed in. Be sure and consider whether dot-notation or bracket-notation might affect your solution.

HINT: You might find deleteFromDriverByKey() to be a bit hard to write non-destructively. Think about how we learned to use Object.assign(). What happens if we do this:

const obj = { foo: "bar" };

const newObj = Object.assign({}, obj);

newObj;
// => { foo: "bar" }

delete newObj['foo'];
// => true

newObj;
// => {}

obj;
// => { foo: "bar" }

Something to keep in mind!

Conclusion

In this lab, we worked with creating Objects and performing operations on them.

Resources

About

License:Other


Languages

Language:JavaScript 87.9%Language:HTML 12.1%