【问题标题】:Problem with function parametrs i cant refer to this function函数参数的问题我可以参考这个函数
【发布时间】:2020-04-09 11:49:12
【问题描述】:
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”是未定义的,我该怎么做才会好?

【问题讨论】:

  • 您能提供getCountryInfo 数组吗?您希望如何“引用”函数参数?
  • 这里的getCountryInfo 变量是什么?
  • 它是一个数组对象,例如 0:{日期:“2020-1-22”,确认:0,死亡:0,恢复:0}
  • 我认为应该是 item[param] 而不是 item.param 和 param = .. 没有意义,你是在循环中重新定义一个变量。
  • @RetupK item[param] 不起作用,因为您正在覆盖 param 变量。 do _param = { x: new Date(formatDate), y: item.param };并返回_param;

标签: javascript reactjs function object javascript-objects


【解决方案1】:

您无需再次迭代。您已经在 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'

【讨论】:

  • 我想在不同的对象中有日期、死亡、活动、恢复,例如当我使用函数 objectWithParams("confirmed") 这会创建我的对象,其值为确认
  • 你的意思是匹配,全部确认并返回??
  • 查看我的其他解决方案,使用此映射器实用程序,您可以映射到任何键。
【解决方案2】:

这就是你要找的东西吗(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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2015-07-14
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多