PHP如何根据元素属性值获取对应数组元素的ID?
嘿,这个需求太常见了,我给你几个实用的实现方案,你可以根据自己的运行环境和需求来选:
方案1:用ES6+的
Array.find()(推荐现代环境) 如果你的项目跑在现代浏览器或者Node.js环境里,这个方法写起来最简洁直观,一行核心逻辑搞定:
首先先定义你的数组(假设是这样的结构):
const userList = [ { id: 0, name: 'Michael', score: 40 }, { id: 1, name: 'Sarah', score: 85 }, { id: 2, name: 'John', score: 60 }, { id: 3, name: 'Michael', score: 70 } ];
然后写查找函数:
function getUserId(targetName, targetScore) { // 找到第一个匹配name和score的元素 const matchedUser = userList.find(user => user.name === targetName && user.score === targetScore ); // 找到就返回id,没找到返回null(你也可以改成-1或者其他默认值) return matchedUser ? matchedUser.id : null; } // 测试你说的场景 console.log(getUserId('Michael', 40)); // 输出0
这个方法的好处是代码简洁,语义化强——find()本身就表示“找到第一个符合条件的元素”,读起来一目了然。
方案2:兼容旧环境的for循环写法
如果你的项目需要兼容ES5及以前的老环境(比如IE9及更早),那用传统的for循环更稳妥:
function getUserId(targetName, targetScore) { for (let i = 0; i < userList.length; i++) { const currentUser = userList[i]; if (currentUser.name === targetName && currentUser.score === targetScore) { return currentUser.id; // 找到就立刻返回,不用遍历完整个数组 } } return null; // 遍历完没找到就返回默认值 } // 测试 console.log(getUserId('Sarah', 85)); // 输出1
拓展:如果需要匹配多个元素的ID
要是你的数组里可能存在多个name和score都相同的元素,想把它们的ID都找出来,可以用filter()配合map():
function getAllUserIds(targetName, targetScore) { return userList .filter(user => user.name === targetName && user.score === targetScore) .map(user => user.id); } // 假设数组里有两个Michael,score都是40的话,会返回对应的ID数组 // 比如输出 [0, 4]
内容的提问来源于stack exchange,提问作者Galaxy
相关产品推荐
相关产品推荐

