如何将getJSON获取的对象数组转换为对象值组成的二维数组?
解决方法:将对象数组转换为二维数组
嘿,我来帮你搞定这个问题!你现在的核心问题是直接把整个对象push到数组里了,所以得到的还是对象数组,而非你想要的二维数组。我们需要把每个对象的属性值单独提取出来,组成新数组再添加进去。
方法一:用Object.values()快速提取值
这个方法会自动提取对象的所有属性值并组成数组,适合不需要严格控制属性顺序的场景:
var url = 'http://localhost:5000/api/items'; $.getJSON(url, function(response) { var response2 = []; $.each(response, function(key, val) { // 提取当前对象的所有属性值,生成新数组后push进response2 response2.push(Object.values(val)); }); console.log(response2); // 输出 [[1, 20, "test"], [4, 30, "test2"]] });
方法二:手动指定属性顺序(更稳妥)
如果你需要严格保证数组元素顺序是id→price→name,可以手动提取每个属性的值,这样能避免对象属性顺序意外变化的问题:
var url = 'http://localhost:5000/api/items'; $.getJSON(url, function(response) { var response2 = []; $.each(response, function(key, val) { // 按照需求顺序提取属性值,组装成新数组 response2.push([val.id, val.price, val.name]); }); console.log(response2); // 输出 [[1, 20, "test"], [4, 30, "test2"]] });
为什么之前的代码不符合预期?
你之前写的response2.push(val),是把整个对象(比如{"id": 1, "price": 20, "name": "test"})直接添加到了response2里,所以最终结果还是一组对象,而非二维数组。我们要做的是把对象里的属性值提取出来,包装成新数组再push进去。
内容的提问来源于stack exchange,提问作者stefano manzi
相关产品推荐
相关产品推荐

