javascript - 在 React.js 中映射一个 JSON 常量

标签 javascript reactjs jsx

我的 React.js 应用程序的 const 中有一堆配置,JSON 如下所示:

const original = [
  { 'id': '1', 'desc': 'AAA', 'isOK': true },
  { 'id': '2', 'desc': 'BBB', 'isOK': true },
  { 'id': '3', 'desc': 'CCC', 'isOK': false },
  ...
];

它包含一堆配置,我可能会将它们放在某个单独的文件中,但现在我想对其进行测试,并认为 const 是合适的。

我正在尝试使用 ReactiveSearch组件并将其提供给MultiDataList's data field为此,它需要转化为:

[
  { label: '1', value: 'AAA' },
  { label: '2', value: 'BBB' },
  { value: '3', value: 'CCC' },
  ...
]

我曾假设 original.map(e => { 'label': e.id, 'value': e.desc }) 可以解决问题,但我得到了“意外的标记” ' 在第一个冒号处。 IntelliJ 说“表达式语句不是赋值或调用”。

通过数组与单个项目进行映射工作得很好,例如original.map(e => e.id),所以我不太确定我做错了什么。我才刚刚开始修补 JavaScript 和 React.js。

最佳答案

为了从箭头函数中隐式返回一个对象,您需要将 {} 括号括在圆括号中,否则解释器不知道如何返回区别于以 {:

开头的普通功能 block

const original = [
  { 'id': '1', 'desc': 'AAA', 'isOK': true },
  { 'id': '2', 'desc': 'BBB', 'isOK': true },
  { 'id': '3', 'desc': 'CCC', 'isOK': false },
];

console.log(
  original.map(e => ({ label: e.id, value: e.desc }))
);

请注意,无需在对象属性(默认情况下假定为字符串)两边加上引号 - 只有字符串 需要用字符串定界符括起来。

另一种方法,使用解构:

const original = [
  { 'id': '1', 'desc': 'AAA', 'isOK': true },
  { 'id': '2', 'desc': 'BBB', 'isOK': true },
  { 'id': '3', 'desc': 'CCC', 'isOK': false },
];

console.log(
  original.map(({ id, desc }) => ({ label: id, value: desc }))
  // or:
  // original.map(({ id: label, desc: value }) => ({ label, value }))
);

关于javascript - 在 React.js 中映射一个 JSON 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52961988/

相关文章:

javascript - 如何使用 react ref 从 html select 元素中获取值?

reactjs - 用 JSX 传播属性覆盖 JSX 属性

reactjs - JSX 仅映射数组中的第一个对象

javascript - Dom 崩溃 react 选择选项

javascript - 添加任何额外的 JavaScript 都会破坏 jQuery 模式中的功能

javascript - 当渲染返回另一个组件时,React 不会调用 componentWillMount

javascript - 将文本区域中的 CSV 输入转换为动态表

javascript - 在 React 中访问有条件渲染的 Canvas 元素以进行绘图

javascript - 如何使用javascript函数从div中减去50px?

javascript - AngularJS DatePicker 值返回未定义