【发布时间】:2018-10-24 08:56:23
【问题描述】:
我有一个对象数组:
let reports = [{ inbound_calls: [...], outbound_calls: [...], outbound_national_calls: [...] },...];
创建新数组并赋值给变量的最佳方法是什么:
第一种方法 - 一个循环:
let inbound_calls = []; outbound_national_calls = [], outbound_calls = [];
reports.forEach((e) => {
inbound_calls.push(e.inbound_calls);
outbound_national_calls.push(e.outbound_national_calls);
outbound_calls.push(e.outbound_calls);
})
第二种方法:
let inbound_calls = this.reports.map((report) => report.inbound_calls)
let outbound_national_calls = this.reports.map((report) => report.outbound_national_calls)
let outbound_calls = this.reports.map((report) => report.outbound_calls)
我开始学习函数式编程,并想将其应用到我的代码中,我会采用第一种方法(一个循环),但是当我对函数式编程进行研究时,我认为第二种方法是正确的(更清洁)但是,我不确定,什么是更便宜的操作?
【问题讨论】:
-
forEach()循环将是成本较低的操作。如果性能是绝对必要的,那么传统的for()循环是 JS 运行时中最快的循环。 -
@MátéSafranka 是的。从技术上讲,使用此代码,最简单的事情就是执行
inbound_calls = reports.inboundCalls.slice()。但是,我认为这个问题仍然有可取之处,如果reports包含类似[ { inbound_calls: ...} ]的内容可能会更有意义
标签: javascript dictionary functional-programming