Здесь функция, которая берет объект и извлекает только те свойства, которые вам нужны. Который вы проходите через массив в качестве второго параметра.
Преимущество: более прямой и чистый. Особенно, когда вам нужно извлечь только из одного объекта.
Если у вас есть список объектов. Отобразите карту в списке и извлекайте данные на каждой итерации.
function objectExtract(obj, properties) {
return properties.reduce((result, prop) => {
if (obj.hasOwnProperty(prop)) {
result[prop] = obj[prop];
}
return result;
}, {});
}
Читать о уменьшить здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce.
использование:
(реальный пример с редуксом)
store.dispatch(
setRooms({
...roomsState,
list: rooms.reduce((list, room) => {
list[room.id] = objectExtract(room, ['name', 'description', 'createdAt', 'updatedAt']);
return list;
}, {})
})
)
(на примере вопроса)
var dataSourceArray = [{
"att1": "something",
"att2": "something",
"att20": "something",
"att100": "something"
}, {
"att1": "something",
"att2": "something",
"att20": "something",
"att100": "something"
}];
let x = dataSourceArray.map((item) => {
return objectExtrac(item, ['att100', 'att2']);
});