Код просто возвращает то, что в первом аргументе соответствует второму аргументу, и проверяется. ссылка на всякий случай
В основном я фокусируюсь на "source[srcKeys[i]]" в операторе if. Только "srcKeys" возвращает "['last']", но если вы добавите перед ним "source", например "source[srcKeys]", вы получите "Capulet". Мой вопрос: почему он возвращает «Капулет», а не «['последний']», поскольку он нацелен на Object.keys, а не на значение?
function whatIsInAName(collection, source) {
var srcKeys = Object.keys(source);
return collection.filter((obj) => {
for (var i = 0; i < srcKeys.length; i++) {
if (obj[srcKeys[i]] !== source[srcKeys[i]]) {
return false
}
}
return true;
});
}
whatIsInAName(
[
{ first: "Romeo", last: "Montague" },
{ first: "Mercutio", last: null },
{ first: "Tybalt", last: "Capulet" }
],
{ last: "Capulet" }
);