Проблема с параметрами функции, я не могу обратиться к этой функции - PullRequest
0 голосов
/ 09 апреля 2020
let confirmed = {};
let deaths = {};
let recovered = {};
const objectWithParams = (param) =>
  getCountryInfo.map((item) => {
    let year, month, day;
    const formatDate = ([year, month, day] = item.date
      .split("-")
      .map((element) => parseInt(element)));
    for (var i = 0; i < getCountryInfo.length; i++) {
      param = { x: new Date(formatDate), y: item.param };
    }
    return param;
  });

confirmed = objectWithParams(`confirmed`);
console.log(confirmed);

как я могу обратиться к параметру функции во время отображения

этот код в console.log показывает мне, что "y" не определено, как я могу это сделать, что это будет хорошо?

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Вам не нужно повторять снова. Вы уже выполняете итерации в map.

Образец:

let confirmed = {};
let deaths = {};
let recovered = {};
const objectWithParams = (param) =>
  param.map(({ date, ...rest }) => {
    const formatDate = date.split("-").map((element) => parseInt(element));
    return { x: new Date(formatDate), ...rest };
  });

confirmed = objectWithParams([
  {
    date: "03-04-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
  {
    date: "03-01-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
  {
    date: "03-02-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
  {
    date: "03-04-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
]);
console.log(confirmed);

Функция картографирования:

let confirmed = {};
let deaths = {};
let recovered = {};
class Mapper {
  constructor(array, key) {
    this.map = array.reduce((map, item) => {
      const val = item[key];
      if (!map[val]) {
        map[val] = [];
      }
      map[val].push(item);
      return map;
    }, {});
  }

  find(key) {
    return this.map[key] && this.map[key][Mapper.FIRST_INDEX]; //return blank array
  }

  findAll(key, returnUndefined) {
    //return blank array
    return this.map[key] ? this.map[key] : returnUndefined ? undefined : [];
  }
}

Mapper.FIRST_INDEX = 0;
const data = [
  {
    date: "03-04-2020",
    death: 10,
    confirmed: 12,
    recovered: 12,
  },
  {
    date: "03-01-2020",
    death: 10,
    confirmed: 12,
    recovered: 10,
  },
  {
    date: "03-02-2020",
    death: 10,
    confirmed: 12,
    recovered: 23,
  },
  {
    date: "03-04-2020",
    death: 10,
    confirmed: 21,
    recovered: 10,
  },
]

var userMapper = new Mapper(data, "confirmed"); // create a map on names
console.log(JSON.stringify(userMapper.map, null, 4)); //will return only user with name 'Schmidt'
userMapper = new Mapper(data, "recovered"); // create a map on names
console.log(JSON.stringify(userMapper.map, null, 4)); //will return only user with name 'Schmidt'
0 голосов
/ 09 апреля 2020

Это то, что вы искали (xdeepakv почти впервые сделал это, я думаю)

const data = [
  {
    date: "03-04-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
  {
    date: "03-01-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
  {
    date: "03-02-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
  {
    date: "03-04-2020",
    death: 10,
    active: 12,
    recovered: 10,
  },
]

const objectWithParams = (param) =>
  data.map(({ date, [param]:y }) => {
    const formatDate = date.split("-").map((element) => parseInt(element));
    return { x: new Date(formatDate), y };
  });

confirmed = objectWithParams('death');
console.log(confirmed);
...