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

如何按对象id值过滤数组并保留coords生成新数组?

根据ID筛选数组并保留对应Coords的解决方案

嘿,这个需求其实挺容易搞定的!咱们可以用JavaScript的filter()和some()这两个数组方法组合起来实现,我给你详细说说怎么做:

核心思路

  1. 先用filter()遍历你的herbs数组,筛选出items数组里包含目标ID的条目
  2. 如果只需要保留coords值,再用map()把筛选后的条目转换成仅含coords的数组;如果需要保留原结构里的coords和其他信息,直接用filter()的结果就行

代码示例

假设你要筛选的目标ID是sage,咱们来看两种常见的场景:

场景1:只提取符合条件的coords数组

// 定义你要筛选的目标ID
const targetId = "sage";

// 执行筛选和转换
const filteredCoords = herbs
  .filter(herb => herb.items.some(item => item.id === targetId))
  .map(herb => herb.coords);

console.log(filteredCoords);
// 输出结果: [[3300,2796], [3300,2800], [3300,2804]]

场景2:保留包含coords的完整条目结构

如果你还需要保留原条目的其他信息(比如items),只需要用filter()就够了:

const targetId = "valerian";

const filteredHerbs = herbs.filter(herb => 
  herb.items.some(item => item.id === targetId)
);

console.log(filteredHerbs);
// 输出结果: 前两个包含valerian的条目(完整结构)

方法解释

  • filter():遍历数组,只保留返回true的元素,这里我们判断当前条目的items里是否有匹配的ID
  • some():检查数组中是否至少有一个元素满足条件,只要找到匹配的ID就会返回true,不用遍历完整个items数组,效率很高

比如如果你筛选wormwood,结果就只会是[[3300,2804]],完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:08:05