首页 > 解决方案 > Objecy.keys().map() VS Array.map()

问题描述

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

方法一:

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;
};

谢谢

标签: javascriptarraysobjectjavascript-objects

解决方案


方法 A 是:

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

此外,方法 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一个数组


推荐阅读