ReactJS对象过滤器在componentDidMount上未定义

时间:2019-11-28 11:36:49

标签: javascript reactjs

我使用this.statemap中获得data

componentDidMount

它成功返回了数据,现在我想对这个对象做一个过滤器,我treid:

componentDidMount() {
  const DistrictOptions = Data.DistrictData.map((obj) => ({
    key: obj.id,
    text: obj.name,
    value: obj.id,
    cid: obj.cid
  }));

console.log(DistrictOptions); // return data successfully
}

但是这个返回的空数组const DistrictOptions = Data.DistrictData.filter(x => x.cid === 1).map((v, i) => { return { key: i, value: v.id, text: v.name } }); 我也尝试过:

[]

但是此返回const opt = DistrictOptions.find(x => x.cid === 1); ,使这里发生的事情和我做错的事情感到困惑。这是undefined

Data.DistrictData

1 个答案:

答案 0 :(得分:2)

您可以使用==比较器来比较如图所示的cid或使用===运算符并将cid转换为数字:

使用==

const DistrictOptions = Data.DistrictData.filter(x => x.cid == 1).map((v, i) => {
  return {
    key: i,
    value: v.id,
    text: v.name
  }
});

使用===

const DistrictOptions = Data.DistrictData.filter(x => Number(x.cid, 10) == 1).map((v, i) => {
  return {
    key: i,
    value: v.id,
    text: v.name
  }
});

您也可以使用parseInt(x.cid,10)转换为整数。