我有一个具有唯一键的对象,每个键都包含一个对象:
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
等中
我尝试在上面使用此函数,但是说“对象不可迭代”是无效的,那么如何迭代对象呢?
答案 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])