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

如何获取对象数组随机元素的索引,设置对应name为图片alt属性?

问题解决思路

首先先修正你代码里的一个语法错误:你的items数组里,后面两个对象缺少了大括号,正确的数组写法应该是这样:

const items = [{
  name: "item1",
  img: "img/pic/picture1.png"
}, {
  name: "item2",
  img: "img/pic/picture2.png"
}, {
  name: "item3",
  img: "img/pic/picture3.png"
}];

你之前的方向绕远了,而且逻辑有误:

  • 用items.indexOf(randomImg)找不到结果,是因为randomImg是字符串类型的图片路径,而items数组里的元素是对象,两者类型和值都不匹配,自然返回-1。
  • 你写的findIndex条件ele => ele === randomImg[ele]逻辑完全错误,ele是数组里的对象,randomImg是字符串,randomImg[ele]根本没有意义,所以也得不到正确索引。

最优解决方案

其实完全不需要再去查找索引,直接先获取整个随机对象,然后分别取它的img和name属性就行,代码更简洁高效:

// 先获取随机对象
const randomItem = items[Math.floor(Math.random() * items.length)];
// 设置图片src
itemImg.src = randomItem.img;
// 设置图片alt
itemImg.alt = randomItem.name;

如果一定要用查找方式(不推荐,多此一举)

如果你非要通过图片路径去查找对应的对象,也可以这样写,但没必要多做一次遍历:

const randomImg = items[Math.floor(Math.random() * items.length)].img;
itemImg.src = randomImg;
// 用find找到对应的对象
const targetItem = items.find(item => item.img === randomImg);
if (targetItem) {
  itemImg.alt = targetItem.name;
}

内容的提问来源于stack exchange,提问作者Sergey Cage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:10