You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:05:55