- Добро пожаловать, мне жаль, что мне потребовалось некоторое время, чтобы что -то опубликовать. В любом случае, давайте вернемся к этому. В этом посте давайте сделаем функцию, которая просматривает массив объектов (первый аргумент) и возвращает массив всех объектов, которые имеют соответствующие пары имени и значения (второй аргумент). Каждое имя и значение значения исходного объекта должна присутствовать в объекте из коллекции.
- Например, если первый аргумент
[{First: "Randy", Last: "Skywalker"}, {First: "Alan", Last: Null}, {First: "Diego", Last: "Rivera"}]и второй аргумент —{Последний: "Ривера"}Затем вы должны вернуть третий объект из массива (первый аргумент), потому что он содержит имя и его значение, которое было принято как второй аргумент.
Хорошо, давайте тогда доберемся до этого. Ниже уже предварительно написано для вас.
function names(collection, target) {
var arr = [];
// Only change code below this line
// Only change code above this line
return arr;
}
names([{ first: "Randy", last: "Skywalker" }, { first: "Alan", last: null }, { first: "Diego", last: "Rivera" }], { last: "Rivera" });
- Отвечать:
function names(collection, target) {
let keys = Object.keys(target);
return collection.filter(function(obj) {
for (let i = 0; i < keys.length; i++) {
if (!obj.hasOwnProperty(keys[i]) || obj[keys[i]] !== target[keys[i]]) {
return false;
}
}
return true;
})
}
names([{ first: "Randy", last: "Skywalker" }, { first: "Alan", last: null }, { first: "Diego", last: "Rivera" }], { last: "Rivera" }); // console.log would display the entire object [{ first: 'Diego', last: 'Rivera' }]
! objв основном означает, еслиobjне.- Также есть немного другой способ сделать петлю.
- Бывший:
function names(collection, target) {
let keys = Object.keys(target);
return collection.filter(function(obj) {
for (let key of keys) {
if (!obj.hasOwnProperty(key) || obj[keys] !== target[keys]) {
return false;
}
}
return true;
})
}
Оригинал: «https://dev.to/rthefounding/matching-properties-and-values-in-the-object-4g4e»