#javascript
#javascript
Вопрос:
Как всегда, я объясню свою проблему на примере (который я решил, но в нем много кода и он уродливый, поэтому я ищу лучшее решение). Я пытаюсь взглянуть на такой объект:
const object1 = {
a: {a:1},
b: 2,
c: 3,
d: 4,
};
Я хочу проверить, обладает ли этот объект каким-либо из следующих свойств [a, f], и если у него есть одно из них, чтобы создать новый объект с этими свойствами
const object2 = {
a: {a:1},
};
Комментарии:
1. что, если это [a, d, f], будет ли результат { a: { a: 1}, d: 4} ??
2. если он существует, то создается новый объект, так что да
3. вы хотите расширить исходный объект или создать из него новый объект, выбрав только некоторые свойства?
4. Новый объект только со свойствами, которые соответствуют элементам массива
5. Пожалуйста, добавьте свое решение в вопрос, чтобы мы не повторяли то, что вы уже сделали, и не предлагали вам другие решения.
Ответ №1:
const object1 = {
a: {a:1},
b: 2,
c: 3,
d: 4,
}
const arrOfItem = ['a', 'd']
const newObj = {}
for(let item in object1) {
if(arrOfItem.includes(item)) {
newObj[item]= object1[item]
}
}
console.log(newObj)
Ответ №2:
посмотрите, работает ли это для вас,
function makeObject (properties) {
const originalObject = {
a: {a:1},
b: 2,
c: 3,
d: 4,
};
let newObject = {}
properties.forEach(property => {
if(originalObject.hasOwnProperty(property)) {
newObject[property] = originalObject[property];
}
});
return newObject;
}
передайте свойства в виде массива строк для makeObject
функции
Комментарии:
1. Спасибо, он должен работать или просто некоторые штрихи здесь и там
Ответ №3:
const d = ['a', 'f', 'd']
const object1 = {
a: {a:1},
b: 2,
c: 3,
d: 4,
};
const object2 = d.reduce((acc, ele) => {
if(object1[ele] !== undefined) acc[ele] = object1[ele];
return acc;
}, {});
console.log(object2);