Objecy.keys().map() VS Array.map()



你能给我一个论据,为什么方法A比方法B更好吗?

方法A:

const transformCompanyOptions = (companies: Array<{id: string, name: string}>, selectedId: string) => {
return companies.map(key => {
return {
value: key.id,
label: key.name,
checked: key.id === selectedId
}
})
};

方法B:

const transformCompanyOptions = (companies: Array<{id: string, name: string}>, selectedId: string) => {
const ret = Object.keys(companies).map((key) => {
const newCompany = {};
newCompany['value'] = companies[key].id;
newCompany['label'] = companies[key].name;
if (companies[key].id === selectedId) {
newCompany['checked'] = true;
}
return newCompany;
});
return ret;
};

谢谢

方法 A 是:

  • 不那么冗长
  • 清洁工
  • 具有更好的性能(您需要首先在方法 B 中通过Object.keys获取所有密钥(

此外,方法A可以改进:

const transformCompanyOptions = (companies: Array<{id: string, name: string}>, 
selectedId: string) => {
return companies.map(c => ({ 
value: c.id,
label: c.name,
checked: c.id === selectedId
}))
};

正如@TKoL评论中所说:

尽量避免将.map中的参数作为键调用,因为 它实际上是一家公司本身,而不是一个阵列的key

最新更新