Как отфильтровать объект по ключу?
Есть объект:
name: 'fffggfg'
surname: 'fhfhfhfg'
about: 'kdfkdfk'
Нужно получить новый объект без свойства about.
С filter:
const source = {
name: 'fffggfg',
surname: 'fhfhfhfg',
about: 'kdfkdfk'
}
console.log(
Object.keys(source)
.filter(key => key !== 'about')
.reduce( (res, key) => { res[key] = source[key]; return res; }, {})
);
var result = Object.assign({}, soruce);Удалить не нужное поле delete result.about;
var result = Object.assign({}, soruce);
delete result.about;
console.log(result);
Почитать об Object.assign и о delete можно на MDN.
Альтернатива (см. комментарии)
var source = {
name: 'fffggfg',
surname: 'fhfhfhfg',
about: 'kdfkdfk',
};
function copyWithout(src, exclude) {
var result = {};
for (prop in src) {
prop !== exclude && (result[prop] = src[prop]);
}
return result;
}
console.log(copyWithout(source, 'about'));
Можно, например, так:
function filterProps(obj, props) {
var result = {};
for (key of Object.keys(obj)) {
if (props.indexOf(key) === -1) {
result[key] = obj[key];
}
}
return result;
}
var foo = {
name: 'fffggfg',
surname: 'fhfhfhfg',
about: 'kdfkdfk'
}
console.log(filterProps(foo, ['about']));
Рабочий пример на JSFiddle
Продвижение своими сайтами как стратегия роста и независимости