如何在Java中将一个数组映射到另一个数组并重置其键?

时间:2019-01-25 15:00:23

标签: javascript arrays

我有一个具有唯一键的对象,每个键都包含一个对象:

  var object = { 'a': {    
      source: '5279edf0-cd7f-11e3-af07-59475a41e2e9',
      target: 'f6b3faa1-ad86-11e3-9409-3dbc47429e9f',
      id: [ 'bf504d02-81e2-4a92-9c5c-8101943dc36d' ],
      edge_context: [ 'small' ],
      statement_id: [ '09b05bc0-20ab-11e9-a5b3-9fb3da66a7cb' ],
      weight: 2 
      }, 
      'b': {
      source: '5279edf1-cd7f-11e3-af07-59475a41e2e9',
      target: 'f6b3faa1-ad86-11e3-9409-3dbc47429e9f',
      id: [ 'de769846-9145-40f8-ab2d-91c0d9b82b27',
       'd5723929-71a0-4dfe-bf03-94d43e358145' ],
      edge_context: [ 'small' ],
      statement_id: 
      [ '09b05bc0-20ab-11e9-a5b3-9fb3da66a7cb',
       '62671510-20ab-11e9-8cbf-ef11fdb08712' ],
       weight: 6 
       }
    }
    
    
    var newArray = [];
    
    for (let item of object) {
            newArray(item);
    }
    
    console.log(newArray);
    
    

我想将其映射到另一个数组,其中的键将像通常的数组一样在序列0, 1, 2等中

我尝试在上面使用此函数,但是说“对象不可迭代”是无效的,那么如何迭代对象呢?

3 个答案:

答案 0 :(得分:1)

也许:

const mappedObject = Object.keys(object).map(
    k => object[k]
)

答案 1 :(得分:0)

正如其他人指出的那样,更改结构。可能采用以下方式(您将获得一个对象数组,可以使用0、1、2等索引来访问该对象):

var objt = [ 
    {"a": {    
      "source": "5279edf0-cd7f-11e3-af07-59475a41e2e9",
      "target": "f6b3faa1-ad86-11e3-9409-3dbc47429e9f",
      "id": [ "bf504d02-81e2-4a92-9c5c-8101943dc36d" ],
      "edge_context": [ "small" ],
      "statement_id": [ "09b05bc0-20ab-11e9-a5b3-9fb3da66a7cb" ],
      "weight": 2 
      }
    }, 
    {"b": {
      "source": "5279edf1-cd7f-11e3-af07-59475a41e2e9",
      "target": "f6b3faa1-ad86-11e3-9409-3dbc47429e9f",
      "id": [ "de769846-9145-40f8-ab2d-91c0d9b82b27",
       "d5723929-71a0-4dfe-bf03-94d43e358145" ],
      "edge_context": [ "small" ],
      "statement_id": 
      [ "09b05bc0-20ab-11e9-a5b3-9fb3da66a7cb",
       "62671510-20ab-11e9-8cbf-ef11fdb08712" ],
       "weight": 6 
      }
    }
];

    var newArray = objt.map(element => {
      const firstProperty = Object.keys(element)[0];
      let objectInfo = element[firstProperty];
      console.log(objectInfo);
      return objectInfo;
    });


    console.log(newArray);

这里发生的是,每个对象的唯一字段未命名相同(在一个对象中为“ a”,下一个为“ b”,依此类推),因此我们需要找出唯一的字段。初始数组中每个对象的属性,其中包含您需要放入另一个数组中的信息。为此。 Object.keys()返回一个对象属性的数组。考虑到每个对象只有一个属性的情况,我们可以使用Object.keys(element)[0]来获取它。

最后,我们只使用.map()生成一个新数组。

答案 2 :(得分:0)

我会使用Object.values(object),但是IE不支持它(为此有一个polyfill)。或者使用Object.getOwnPropertyNames(IE支持)将键转换为数组,然后将该数组映射到包含值的另一个数组。

var newArray = Object.getOwnPropertyNames(object).map(key => object[key])