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

如何无需循环或直接索引获取多维数组值?是否有Lodash方案?

提取嵌套结构中的目标值(无显式循环/直接链式索引)

针对你给出的嵌套数组结构,以下是几种符合要求的实现方式:

Lodash 实现方案

Lodash 提供了多个工具函数可以轻松处理这种嵌套取值场景:

1. 使用 _.get()

这是最常用的嵌套取值方法,支持字符串或数组形式的路径参数,避免了直接链式索引的写法:

// 字符串路径
const name1 = _.get(arr, '[0][0].values[0].name');
console.log(name1); // sumit sharma

// 数组路径
const name2 = _.get(arr, [0, 0, 'values', 0, 'name']);
console.log(name2); // sumit sharma

2. 使用 _.property()

该方法会返回一个取值函数,传入目标结构即可获取对应值:

const getName = _.property('[0][0].values[0].name');
console.log(getName(arr)); // sumit sharma

原生 JavaScript 实现方案

如果不想引入 Lodash,也可以用原生方法实现:

1. 扁平化数组 + 高阶函数

利用 flat(Infinity) 一键扁平化所有嵌套数组,再通过 find 定位目标对象(内部循环由引擎处理,无需自己写显式循环):

// 扁平化多层数组
const flatItems = arr.flat(Infinity);
// 找到包含 values 属性的对象
const target = flatItems.find(item => item.values);
// 扁平化 values 数组并找到包含 name 的对象
const name = target.values.flat(Infinity).find(item => item.name).name;
console.log(name); // sumit sharma

2. JSON 字符串匹配

如果结构固定,也可以通过字符串匹配直接提取值:

const jsonStr = JSON.stringify(arr);
const [, name] = jsonStr.match(/"name":"([^"]+)"/) || [];
console.log(name); // sumit sharma

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:50:44