如何通过逗号获取JSON数据?JS对象数组拼接报错问题
问题分析与解决方案
问题原因
[object Object]输出的原因:你调用filter后得到的仍然是对象数组,直接对对象数组使用join(",")时,JavaScript会自动调用每个对象的toString()方法,而对象默认的toString()返回值就是[object Object],因此最终拼接出了一堆[object Object]。JSON.parse报错的原因:lk = data.response.location已经是JavaScript解析好的数组对象,不是JSON格式的字符串,JSON.parse()只能处理JSON字符串,所以会抛出解析错误。
修正代码
要实现提取每个location对象里的location字段并以逗号分隔,需要先用map把对象数组转换成字符串数组,再执行join:
var lk = data.response.location; console.log(lk); // 先筛选(确保item有location字段才保留),再提取目标字段,最后拼接 var ghlok = lk .filter(function(item) { return item.location; }) .map(function(item) { return item.location; }) .join(","); console.log(ghlok); // 输出:1m23,2df65,3sk56
如果你的场景里所有location对象都包含location字段,不需要筛选逻辑,可以简化为:
var ghlok = lk.map(item => item.location).join(",");
额外场景处理
如果需要拼接整个对象的JSON字符串(比如把每个对象转成JSON格式再拼接),可以用map结合JSON.stringify:
var ghlok = lk.map(item => JSON.stringify(item)).join(","); // 输出:{"city":"Lond.","location":"1m23"},{"city":"Lond.","location":"2df65"},{"city":"Lond.","location":"3sk56"}
内容的提问来源于stack exchange,提问作者Gulnara
相关产品推荐
相关产品推荐

