繁体   English   中英

将对象转换为二维数组但删除键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM