首页 > 解决方案 > 如何为特定对象键编写过滤条件?

问题描述

我有一个对象:

const list = {
  apples: '2',
  grapes: '1',
  almonds: 'allergic',
  bags: '',
}

我想要的是如果list.bags === ''将它从对象中排除,那么最终结果将是:

const list = {
  apples: '2',
  grapes: '1',
  almonds: 'allergic',
} 

我尝试过滤掉它,但它总是删除bags

const newList = Object.fromEntries(Object.entries(list).filter(
            ([key, v]) => key !== 'bags' && v !== '',
        ),
);

我怎样才能写出这种类型的条件filter

标签: ecmascript-6

解决方案


如果您只想删除单个属性,我会使用Object.assign(或传播属性)来克隆对象,并delete在必要时仅克隆该属性:

const newList = {...list};
if (newList.bags === '') {
  delete newList.bags;
}

推荐阅读