我有一个数据文件,格式为对象数组[{name,state},{name,state},{name,state},{name,state},{name,state}]
,我需要获取州的数据以及属于同一州的人数,因此我需要一个包含状态和其计数的对象数组,如[{state,count},{state, count},{state,count}]
。ReactJS应该如何实现这个功能?
我有一个数据文件,格式为对象数组[{name,state},{name,state},{name,state},{name,state},{name,state}]
,我需要获取州的数据以及属于同一州的人数,因此我需要一个包含状态和其计数的对象数组,如[{state,count},{state, count},{state,count}]
。ReactJS应该如何实现这个功能?
这与ReactJS无关,ReactJS是用于呈现和管理UI的库。 在JavaScript中,您可以使用.reduce函数来完成此操作。我将生成一个包含[{name: string, count: number}]的数组:
const userArray = [{name: Riya, state: US}, {name: Chris, state: DE}]
const stateArray = userArray.reduce((newArray, currentElement) => {
const stateExistsIndex = newArray.findIndex((state) => state.name === currentElement.state)
if (stateExistsIndex !== -1) {
const selectedState = newArray[stateExists]
newArray[stateExists] = { name: selectedState.name, count: selectedState.count++ }
} else {
newArray.push({ name: currentElement.name, count: 1 })
}
return newArray
}, [])
这将创建一个新的数组。它遍历旧数组,如果状态不存在则将元素推送到新数组中。如果存在,则将其计数增加1。当然,您也可以使用for-of循环完成此操作,这可能更容易理解。
let newArray = []
oldArray.forEach((element) => {
if (newArray.findIndex(newElement => newElement.name === element.state) === -1) { // 将元素推入数组 } else { 增加新数组元素的计数 }
})
- Chrissi Grilus