如何从对象中过滤掉键?

时间:2017-08-20 03:17:52

标签: javascript ecmascript-6 javascript-objects

我在JS中有以下对象。如何选择除第一个financial_year以外的所有键并将其放入一个新的空对象?

我知道我可以执行类似obj["mainline_revenue"]之类的操作来选择单个元素,但它有很长的列表,而且我不想单独键入元素键。

var obj = {financial_year: 1, mainline_revenue: 18743, regional_revenue: 2914, other_revenue: 3198, salaries_wages: -6897}

var newObj = {}

新对象看起来像这样:

console.log(newObj)
{mainline_revenue: 18743, regional_revenue: 2914, other_revenue: 3198, salaries_wages: -6897}

1 个答案:

答案 0 :(得分:1)

您可以使用Object.assign克隆对象,然后使用delete删除不需要的属性:

var newObj = Object.assign({}, obj);
delete newObj.financial_year;

当然还有其他更多功能性的方法来实现这一点,可能是通过过滤密钥,然后缩减为对象:

var newObj = Object.keys(obj).filter(key => 
  key !== 'financial_year'
).reduce((newObj, currKey) =>
  (newObj[currKey] = obj[currKey], newObj), 
{});

虽然如果你有一系列密钥,这种方法更适合你想要过滤掉,你可以检查密钥是否在filter回调中的数组中