返回对象之后的此数组的用途是什么?

时间:2019-06-15 00:30:39

标签: javascript arrays reactjs object ecmascript-6

有人可以描述[this.props.currency]放置在返回对象之后的目的,还是我可以阅读的关于此模式的地方,因为我之前从未见过。

我不是在问this.props.currency是什么,而是它在返回对象之后的目的。

在此博客文章中看到: https://javascriptplayground.com/react-extracting-logic/

export const getCurrencyData = currency => {
    return {
        GBP: { base: 100, symbol: '£' },
        USD: { base: 100, symbol: '$' },
      }[this.props.currency];
    };

2 个答案:

答案 0 :(得分:1)

它所做的就是用键this.props.currency获取属性的值-因此,如果currency"GBP",则返回的值是{ base: 100, symbol: "£" }。您可以这样写,使其更清晰:

export const getCurrencyData = currency => {
    const obj = {
        GBP: { base: 100, symbol: '£' },
        USD: { base: 100, symbol: '$' }
      };
      return obj[this.props.currency];
};

您还可以利用带有箭头功能的显式返回功能来删除return关键字:

export const getCurrencyData = currency => ({
    GBP: { base: 100, symbol: '£' },
    USD: { base: 100, symbol: '$' },
}[this.props.currency]);

答案 1 :(得分:0)

货币是要查找的对象部分的关键。

您可以将其重写为:

function getCurrencyData(currency) {
  const allAvailableData = {
    GBP: { base: 100, symbol: '£' },
    USD: { base: 100, symbol: '$' },
  }

  return allAvailableData[currency]
}

console.log(getCurrencyData('GBP'))
// { base: 100, symbol: '£' }
console.log(getCurrencyData('USD'))
// { base: 100, symbol: '$' }