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
相关产品推荐
相关产品推荐

