[英]Convert object into 2-d array but remove keys
我正在尝试将以下内容转换为:
let JSON = [
{1:"hello",2:"goodbye",3:"bonjour"},
{4:"hello2",5:"goodbye2",6:"bonjour2"},
{7:"hello3",8:"goodbye3",9:"bonjour3"},
{10:"hello4",11:"goodbye4",12:"bonjour4"}
]
对此:
let arr = [
["hello","goodbye","bonjour"],
["hello2","goodbye2","bonjour2"],
["hello3","goodbye3","bonjour3"],
["hello4","goodbye4","bonjour4"]
]
我试过了:
var row1 = JSON.map(function(e) {
return [ e.1, e.2, e.3];
});
var row2 = JSON.map(function(e) {
return [ e.4, e.5, e.6];
});
var row3 = JSON.map(function(e) {
return [ e.7, e.8, e.9];
});
var row4 = JSON.map(function(e) {
return [ e.10, e.11, e.12];
let array = [row1,row2,row3,row4]
但不能得到任何工作。 我将不胜感激任何帮助 :)
试试这个:
let JSON = [
{1:"hello",2:"goodbye",3:"bonjour"},
{4:"hello2",5:"goodbye2",6:"bonjour2"},
{7:"hello3",8:"goodbye3",9:"bonjour3"},
{10:"hello4",11:"goodbye4",12:"bonjour4"}
];
let arr = JSON.map(obj => {
return Object.values(obj);
});
您可以使用标准for
循环来迭代对象键并将对象值推送到您返回的数组(有序)中,所有这些都在Array.map
的回调中。 此外,您的问题是 Array.map 对数组的每个项目都有效,而不仅仅是一次一个。 这就是为什么您的代码无法按您预期的方式工作的原因。
let JSON = [
{1:"hello",2:"goodbye",3:"bonjour"},
{4:"hello2",5:"goodbye2",6:"bonjour2"},
{7:"hello3",8:"goodbye3",9:"bonjour3"},
{10:"hello4",11:"goodbye4",12:"bonjour4"}
]
const result = JSON.map(a=>{
const b = [];
for(var k in a){
b.push(a[k]);
}
return b;
});
console.log(result);
鉴于您的示例数据,您似乎可以简单地使用Object.values
:
let original = [ {1:"hello",2:"goodbye",3:"bonjour"}, {4:"hello2",5:"goodbye2",6:"bonjour2"}, {7:"hello3",8:"goodbye3",9:"bonjour3"}, {10:"hello4",11:"goodbye4",12:"bonjour4"} ] var array = original.map(Object.values); console.log(array);
这是有效的,因为每个对象中元素的顺序与您想要在结果数组中实现的顺序相同。
如果您并非总是如此(例如,您有{12:"bonjour4",11:"goodbye4",10:"hello4"}
并且您仍然想返回["hello4","goodbye4","bonjour4"]
) 您可以先按条目的键对条目进行排序。 例如:
let original = [ {1:"hello",2:"goodbye",3:"bonjour"}, {4:"hello2",5:"goodbye2",6:"bonjour2"}, {7:"hello3",8:"goodbye3",9:"bonjour3"}, {12:"bonjour4",11:"goodbye4",10:"hello4"} ] var array = original .map(obj => Object .entries(obj) .sort(([k1], [k2]) => k1 - k2) .map(([_, v]) => v)); console.log(array);
作为旁注,我会提醒您不要使用名称JSON
因为这会隐藏内置的JSON
对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.