如何在JavaScript中从JSON数组获取指定成员Rating及显示远程值
如何在JavaScript中从对象数组里获取指定成员的Rating值?
嘿,我来帮你解决这个问题~你遇到的问题其实是把JavaScript的对象数组当成了键值对对象来访问啦,咱们一步步来理清楚:
首先得纠正一个小概念:你定义的members是一个对象数组,不是JSON关联数组(JSON里并没有“关联数组”的说法,在JS里这种结构就是包含多个对象的数组)。你之前用echo members[$temp].Rating的写法行不通,是因为数组只能通过数字索引来访问元素,而$temp是字符串"Jones, Jim",自然找不到对应元素啦。
下面给你几种实用的解决方法:
方法一:用find()方法(ES6+,最简洁)
这是现在最常用的方式,find()会遍历数组,返回第一个符合条件的对象:
const temp = "Jones, Jim"; const members = [ { "Rating": "1500", "Name": "Williams, Bill"}, { "Rating": "2000", "Name": "Smith, Paul" }, { "Rating": "1000", "Name": "Jones, Jim" }, { "Rating": "1750", "Name": "Reynolds, Beverly" } ]; // 找到Name匹配的成员对象 const targetMember = members.find(member => member.Name === temp); // 一定要加判断,避免找不到成员时报错 if (targetMember) { console.log(targetMember.Rating); // 会输出 1000 } else { console.log("找不到该成员哦"); }
方法二:用for循环遍历(兼容旧环境)
如果你的运行环境不支持ES6语法,用传统的for循环也能搞定:
const temp = "Jones, Jim"; const members = [ { "Rating": "1500", "Name": "Williams, Bill"}, { "Rating": "2000", "Name": "Smith, Paul" }, { "Rating": "1000", "Name": "Jones, Jim" }, { "Rating": "1750", "Name": "Reynolds, Beverly" } ]; let targetRating = null; for (let i = 0; i < members.length; i++) { if (members[i].Name === temp) { targetRating = members[i].Rating; break; // 找到就退出循环,提升效率 } } if (targetRating) { console.log(targetRating); // 输出 1000 } else { console.log("没有找到对应的成员"); }
方法三:转成键值对映射(适合多次查找)
如果你需要根据Name多次查找不同成员的Rating,提前把数组转成以Name为键的对象会更高效:
const temp = "Jones, Jim"; const members = [ { "Rating": "1500", "Name": "Williams, Bill"}, { "Rating": "2000", "Name": "Smith, Paul" }, { "Rating": "1000", "Name": "Jones, Jim" }, { "Rating": "1750", "Name": "Reynolds, Beverly" } ]; // 把数组转成 { 名字: 评分 } 的映射 const memberRatingMap = members.reduce((map, member) => { map[member.Name] = member.Rating; return map; }, {}); // 之后直接通过名字获取评分就行 console.log(memberRatingMap[temp]); // 输出 1000
这样就能轻松拿到你想要的Rating值啦~
内容的提问来源于stack exchange,提问作者verlager
相关产品推荐
相关产品推荐

