我目前拥有以下格式的数据:
var anArray = [
obj1: {
key1: data1
},
obj2: {
key2: data2
},
];
我希望数据采用以下格式:
var array2 = [data1, data2];
出于某种原因,我无法想出一个简洁的方法来解决这个问题。我知道可以使用forEach
循环来迭代每个对象并将其推送到一个新数组,但我希望更优雅(如果可能的话,更短)。
答案 0 :(得分:1)
const anArray = {
obj1: {
key1: "A"
},
obj2: {
key2: "B"
},
};
const result = Object.keys(anArray).map(key => {
const obj = anArray[key];
return Object.keys(obj).map(key => obj[key])[0];
});
console.log(result);
答案 1 :(得分:0)
尝试:
const arr1 = [
{key1:'value1'},
{key2:'value2'}
]
const res = arr1.map(obj => {
return Object.keys(obj).map(val => obj[val])
}).reduce((acc,v) => {
return acc.concat(v);
},[]);
console.log(res);
<强>更新强>
但如果您有以下表格:
var anArray = [
obj1: {
key1: data1
},
obj2: {
key2: data2
},
];
最好应用递归函数,如下所示:
const arr1 = [
{
obj1:{key1:'value1',key3:'value3'}
},
{
obj2:{key2:'value2'}
}
]
const getValuesFromObj = (obj) => {
if(typeof obj === 'string')
return obj;
return Object.keys(obj).map(key => {
return getValuesFromObj(obj[key]);
}).reduce((acc,v) => {
return acc.concat(v);
},[]);
}
const r2 = getValuesFromObj(arr1);
console.log(r2);
答案 2 :(得分:0)
鉴于anArray实际上已经正确构造为有效,那么您可以执行以下操作:
请注意,在这种情况下,anArray
不是实际数组,而是对象文字
var anArray = {
obj1: {
key1: "data1"
},
obj2: {
key2: "data2"
},
};
var array2 = []
for(i in anArray){
for(j in anArray[i]){
array2.push(anArray[i][j])
}
}
console.log(array2)