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

如何将随机获取的market ID以值列表而非对象形式返回?

解决方案

因为你的markets是二维数组,所以需要先把嵌套的数组扁平化,再提取每个对象里的id字符串,这里给你几种实用的实现方式:

方法一:使用flat() + map()(最简洁)

这种方法先把二维数组转成一维,再批量提取id:

const randomIndex = Math.floor(Math.random() * data.length);
const selectedEvent = data[randomIndex];
const eventId = selectedEvent.eventId;
// 扁平化二维数组后,提取每个对象的id
const marketIds = selectedEvent.markets.flat().map(item => item.id);

如果你的markets可能有更深的嵌套(比如三维数组),可以用flat(Infinity)来彻底扁平化。

方法二:使用嵌套forEach()(直观易懂)

适合喜欢步骤清晰写法的场景:

const randomIndex = Math.floor(Math.random() * data.length);
const selectedEvent = data[randomIndex];
const eventId = selectedEvent.eventId;
const marketIds = [];
// 遍历外层数组
selectedEvent.markets.forEach(marketGroup => {
  // 遍历内层每个对象,提取id并存入数组
  marketGroup.forEach(item => {
    marketIds.push(item.id);
  });
});

方法三:使用reduce()(灵活可控)

如果需要在提取过程中做额外处理,这种方式更灵活:

const randomIndex = Math.floor(Math.random() * data.length);
const selectedEvent = data[randomIndex];
const eventId = selectedEvent.eventId;
const marketIds = selectedEvent.markets.reduce((resultArray, currentGroup) => {
  // 把当前组的id数组合并到结果数组里
  return resultArray.concat(currentGroup.map(item => item.id));
}, []); // 初始值为空数组

额外提示

如果担心部分对象没有id属性导致返回undefined,可以用可选链操作符做容错处理:

// 替换原map里的item.id为item?.id,再过滤掉无效值
const marketIds = selectedEvent.markets.flat().map(item => item?.id).filter(Boolean);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:05:13