微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 React JS 计算字符串数组中的重复项

如何解决使用 React JS 计算字符串数组中的重复项

以下是我实现的代码,用于在 React 应用程序中使用图表 js 创建条形图。在这里,它创建一个条形图,其中包含一个数组中的所有数据。但是,我只想更改此代码以在 x 轴 - 目的地,y 轴 - 不提供输出。因为它有许多重复的目的地,所以这个目的地的出现。 我搜索了这个方法,但我找不到正确的解决方案。 谁能帮我做这件事?

const dataArrayY4 = [];
res.data.map(item => {
  dataArrayY4.push(item.time)
})
const dataArrayX4 = []
res.data.map(item => {
  dataArrayX4.push(item.destination)
})
this.setState({
  data4: dataArrayY4,labels4: dataArrayX4,});

解决方法

我会让代码更有效率。 dataArrayY4 不是一个数组,而是一个具有值键和每个值出现次数的对象。这样,你就可以统计 res.data 中所有项出现的所有次数

const dataArrayY4 = {};
res.data.map(item => {
     dataArrayY4[item.destination] = (dataArrayY4[item.destination] || 0) + 1
 })
 
const dataArrayX4 = []
 res.data.forEach(item => {
    dataArrayX4.push(item.destination)
 })
this.setState({
    data4: dataArrayY4,labels4: dataArrayX4,});

然后,如果您想查找特定值的出现,您 使用这个例如。斯里兰卡

this.state.data4['Sri Lanka']
,

这可以按如下方式完成:

const res = {
  data: [
    { time: 1,destination: 'A'},{ time: 3,{ time: 2,destination: 'B'}    
  ]
};

let tmp4 = [];
res.data.map((o,i) => {
  const existing = tmp4.find(e => e.destination == o.destination);
  if (existing) {
    existing.time += o.time;
  } else {
    tmp4.push({time: o.time,destination: o.destination});
  }
})

this.setState({
  data4: tmp.map(o => o.time);
  labels4: tmp.map(o => o.destination);
});

可以使用 Array.reduce() 代替 Array.map() 进一步优化上述代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。