我在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}

最佳答案

您可以使用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回调中的数组中。

10-06 07:55