-1

我得到的节点 js API 响应

[
    {
        "selected": true,
        "date": "2021-01-15",
        "selectedColor": "#2ecc71"
    },
    {
        "selected": true,
        "date": "2021-01-16",
        "selectedColor": "#e74c3c"
    },
]

我想要的 React Js (react-native-calendars) 的 Node Js API 响应

markedDates={{
    '2021-01-15': {selected: true, selectedColor: '#e74c3c'},
    '2021-01-16': {selected: true, selectedColor: '#2980b9'}
}}
4

2 回答 2

0

您可以使用reduce将输入数组转换为所需的格式,如下所示:

const data = [
    {
        "selected": true,
        "date": "2021-01-15",
        "selectedColor": "#2ecc71"
    },
    {
        "selected": true,
        "date": "2021-01-16",
        "selectedColor": "#e74c3c"
    },
];

const markedDates = data.reduce((a, c) => ({
    ...a, 
    [c.date]: { 
        selected: c.selected, 
        selectedColor: c.selectedColor
    }
}), {});

reduce 操作迭代输入数组,在这种情况下,我们将当前项目的键(c在示例中)附加到累积(a在示例中)值。我们通过使用新的 ES6 运算符进一步缩短代码,例如返回一个对象字面量和使用扩展运算符,这也在 JS 文档中展示

于 2021-01-06T19:01:14.950 回答
0

使用 ES6 的工作代码:

const input = [
  {
      "selected": true,
      "date": "2021-01-15",
      "selectedColor": "#2ecc71"
  },
  {
      "selected": true,
      "date": "2021-01-16",
      "selectedColor": "#e74c3c"
  },
]

const format = input => {
  const obj = {};
  input.forEach(inp => {
    const { selected, date, selectedColor } = inp;
    obj[date] = { selected, selectedColor };
  });
  return obj;
}

console.log(format(input));
于 2021-01-06T19:02:16.623 回答