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

如何用jQuery .map()返回二维数组?为何返回一维数组?

jQuery .map() 返回二维数组的问题及解决方法

问题原因

你遇到的情况是因为jQuery的.map()方法有个特殊行为:当回调函数返回一个数组时,它会自动将这个数组扁平化——把数组中的每个元素单独提取出来,添加到最终的结果数组里,而不是把整个数组作为单个元素保留。所以你返回[id, {sequence: index}]时,这个数组会被拆成两个独立元素,最终得到一维数组。

解决方法

有两种直接得到二维数组的方式,不需要事后处理结果:

方法1:让回调返回嵌套数组

在回调里返回一个包含目标数组的单元素数组,这样jQuery扁平化后,只会展开外层的单元素数组,保留内层的目标数组作为结果的一个元素:

$('.recipeList').find('.recipe')
  .map(function(index, element) {
    return [
      [$(element).data('id'), { sequence: index }]
    ];
  }).get();

方法2:改用原生JavaScript的Array.prototype.map()

原生的map()方法不会做扁平化处理,直接返回你回调返回的结构。需要先通过.get()把jQuery对象转换成原生数组,再调用原生map:

$('.recipeList').find('.recipe').get()
  .map(function(element, index) {
    // 注意原生map的参数顺序是(element, index),和jQuery相反
    return [$(element).data('id'), { sequence: index }];
  });

验证结果

两种方法最终都会得到你预期的二维数组:

[
  ['abc',{sequence:0}],
  ['def',{sequence:1}],
  ['ghi',{sequence:2}],
  ['jkl',{sequence:3}]
]

内容的提问来源于stack exchange,提问作者Aaron Dunigan AtLee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:25:24