Я хотел бы знать, что происходит в линии, которую я выделил жирным шрифтом. Я знаю, что они "работают", но не знаю почему.
Я выполнял упражнение, в котором мне нужно было написать функцию select. Учитывая массив и объект, я должен был вернуть новый объект, свойства которого включали только те, которые были общими для массива и исходного объекта. Например:
var arr = ['a', 'c', 'e']; var obj = { a: 1, b: 2, c: 3, d: 4 }; var output = select(arr, obj); console.log(output); // --> { a: 1, c: 3 }
Приведенный ниже код "работает", но я пытаюсь понять, как newObject[search] = obj[search] дает правильные результаты в newObject.
function select(arr, obj) { var newObject = {}; var keys = Object.keys(obj); for (var i = 0; i < arr.length; i++) { var search = arr[i]; if (keys.indexOf(search) !== - 1) { newObject[search] = obj[search]; } } return newObject; }
Что я уже пробовал:
Я несколько раз запускал этот код через отладчик в Google dev tools. Мое лучшее понимание заключается в том, что obj[search] достигает всего пути назад до переменной "keys", чтобы узнать, как она связана с переменной "search".
Искренне благодарю вас за вашу помощь!