使用 React JS 计算字符串数组中的重复项
Count the duplicates in a string array using 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, destination: 'A'},
{ 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()
instead of Array.map()
.
进一步优化
以下是我在 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, destination: 'A'},
{ 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()
instead of Array.map()
.