reactjs - react js如何获取最小值
问题描述
在下面的代码中,我尝试{this.renderCost(data,'mina')}
使用 react js 运行。我想获得total
使用下面代码的最小值,但是total
一个对象的值name
等于例如 mina
(或其他名称,因为它将被更改)。我尝试了以下方法:首先推送total
using的值indents.push(elem.total)
,该部分的预期输出为[2000,1000]
,然后通过 获取数组的最小值Math.min(...indents)
,该部分的预期输出为,[1000]
但该功能不起作用。
const data = [
{
"obj": {
"no": "1",
"info": [
{
"name": "maya"
},
{
"name": "mina"
}
],
"total":"2000"
}
},
{
"obj": {
"no": "2",
"info": [
{
"name": "maya"
}
],
"total":"1000"
}
},
{
"obj": {
"no": "3",
"info": [
{
"name": "mina"
},
{
"name": "Mike"
}
],
"total":"1000"
}
}
]
renderCost(data,name){
let indents = [];
data.map((elem) => {
this.renderTotal(elem,name,indents)
})
}
renderTotal(elem,name,indents){
for(let i = 0 ; i < elem.info.length;i++){
if (elem.info[i].name == name){
indents.push(elem.total)
}
return (
Math.min(...indents)
)
}
}
解决方案
您正在使用的数据结构并不适合此特定搜索,但是您可以通过以下方式获得答案:
const minTotalByName = (data, name) => {
const totals = data
.filter(x =>
x.obj.info.find(y => y.name === name)
).map(x => x.obj.total);
return Math.min(...totals);
}
const min = minTotalByName(data, "mina"); // 1000
推荐阅读
- vulkan - 在不重新创建 vulkan 管道的情况下添加更多纹理的任何方式
- c - 如何在不使用 C 中的数组或指针的情况下反向打印值
- redis - Redis 集群 HA 在 Kubernetes 中不起作用
- c - C中的递归函数打印1到n到1
- reactjs - 为什么我的 axios onUploadProgress 回调没有在 localhost 上触发,但部署时很好?
- rollupjs - 使用 Gulp.js 汇总 - 多个输出
- javascript - 将 Browserify 运行到前端的问题
- python - 简单的 Python 脚本 - 启动 python 后不执行导入命令
- api - Rest API 设计与资源和深度资源
- angular - NbAuthService:没有以“电子邮件”名称注册的身份验证策略 - Nebular Firebase 身份验证