代码之家  ›  专栏  ›  技术社区  ›  Tavish Aggarwal

基于JSON对象映射填充数组

  •  -2
  • Tavish Aggarwal  · 技术社区  · 8 年前

    我需要根据JSON对象的映射填充数组。 例如: 假设我有JSON对象,如下所示:

    let columns = { 'name' :'value', 'id' : 1, 'age': 15}
    

    我想创建一个具有如下所示值的数组:

    var values = [1, 15, value]; // id, age, name
    

    我能够创建数组的数组,如下所示:

    var data = new Array();
    var output = new Array();
    let columns = [
    { 'name' :'value', 'id' : 1, 'age': 15},
    { 'name' :'value1', 'id' : 2, 'age': 18}
    ];
    
    for(let i=0;i< columns.length; i++) {
        for (let variable in columns[i]) {
          data.push(columns[i][variable]);
        }
        output.push(data);
        data = new Array();
      }
      
      console.log(output);

    我正在努力按我需要的顺序将价值推送到阵列。我尝试创建映射对象,但到目前为止没有成功。请告诉我可能的解决方案。

    编辑:

    感谢您提供的解决方案,我可以通过任何方式在变量中定义映射函数参数和json对象。并将其更换。如下所示:

    let mapping {
    columns : '{name, id, age}',
    mapping : '[id, age, name]'
    }
    const result = columns.map((mapping.columns) => mapping.mapping);
    
    3 回复  |  直到 8 年前
        1
  •  5
  •   Nenad Vracar    8 年前

    您可以使用 map() 方法,并按所需顺序向数组中添加属性。

    let columns = [{ 'name' :'value', 'id' : 1, 'age': 15},{ 'name' :'value1', 'id' : 2, 'age': 18}];
    
    const result = columns.map(({name, id, age}) => [id, age, name]);
    console.log(result)
        2
  •  1
  •   J-J    8 年前

    您还可以删除内部for循环,并读取具有列名(或JSON字段名)的数据,因此如下所示。

    var data = new Array();
    var output = new Array();
    let columns = [
    { 'name' :'value', 'id' : 1, 'age': 15},
    { 'name' :'value1', 'id' : 2, 'age': 18}
    ];
    
    for(let i=0;i< columns.length; i++) {
       data.push(columns[i]['id']);
       data.push(columns[i]['age']);
       data.push(columns[i]['name']);
        output.push(data);
        data = new Array();
      }
      
      console.log(output);
        3
  •  0
  •   zabusa    8 年前

    您可以使用 Object.values() 从 object

      
    var output = new Array();
    let columns = [
    { 'name' :'value', 'id' : 1, 'age': 15},
    { 'name' :'value1', 'id' : 2, 'age': 18}
    ];
     output = columns.map(item => Object.values(item))
      
      console.log(output);