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

JavaScript中从数组取数据仍为数组,如何转为单个对象?

解决数组提取单个对象的问题

嘿,我来帮你搞定这个问题!你遇到的核心问题是**$.map方法无论匹配到多少结果,都会返回一个数组**——哪怕你只找到了id=4的那一个对象,keys变量依然是一个长度为1的数组,所以后续用Object.assign也没法直接转成单个对象(它只会把数组的索引作为键,把元素塞进去,得到类似{0: 你的目标对象}的结构)。

给你几个简单的解决方案:

方案1:直接从结果数组中取第一个元素

既然$.map返回的数组里只有你要的那一个对象,直接通过索引[0]提取就行:

var profile = $(this).data('profile'); 
var citizens = $(this).data('citizens'); 
console.log(citizens); 
console.log(profile); 

var keys = $.map(citizens, function(value, key) {
  if (value.id == 4) {
    return value; 
  }
});

// 提取数组的第一个元素,得到单个对象
var singleCitizen = keys[0];
console.log(singleCitizen); // 这就是你要的目标对象啦

方案2:用更高效的查找方法(推荐)

$.map会遍历整个数组,其实你只需要找第一个匹配id=4的对象,用原生的Array.find或者jQuery的$.grep更高效:

原生JS的find方法(最简洁)

var singleCitizen = citizens.find(function(value) {
  return value.id === 4;
});
console.log(singleCitizen);

jQuery的$.grep方法

var singleCitizen = $.grep(citizens, function(value) {
  return value.id == 4;
})[0]; // 同样取数组第一个元素
console.log(singleCitizen);

这样处理后,singleCitizen就是你想要的、和箭头指向的第二行一样的单个对象了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:54:56