我有这个数组:
var arrayData =
[ { "A" : {
"score" : 37.91,
"color": "red"
}
},
{ "B" : {
"score" : 77.11,
"color": "green"
}
},
{ "C" : {
"score" : 45.35,
"color": "blue"
}
} ]
我需要将arrayData
映射到值为"score"
和"color"
的单个数组中。 arrayData
也可以具有不仅仅是A,B,C(例如A,B,C,D,E ......)。
所以我需要:
arrayScores = [37.91, 77.11, 45.35]
arrayColors = ["red", "green", "blue"]
我正在使用Meteor。我怎么能实现这一目标? 非常感谢。
答案 0 :(得分:4)
如果保证每个内部对象只有一个键,则可以执行以下操作:
arrayScores = arrayData.map((item)=>(Object.values(item)[0].score));
arrayColors = arrayData.map((item)=>(Object.values(item)[0].color));
答案 1 :(得分:1)
var data = [ { "A" : {
"score" : 37.91,
"color": "red"
}
},
{ "B" : {
"score" : 77.11,
"color": "green"
}
},
{ "C" : {
"score" : 45.35,
"color": "blue"
}
} ]
var result = data.reduce((acc, item) => {
Object.keys(item).map((elem) =>{
acc[0].push(item[elem].score);
acc[1].push(item[elem].color);
})
return acc;
}, [[], []]);
arrayScore = result[0];
arrayColor = result[1];
console.log(result);

答案 2 :(得分:1)
这是一个非常简单的问题,我向您推荐,请在发布问题之前参考javascript核心功能。
var arrayData =
[ { "A" : {
"score" : 37.91,
"color": "red"
}
},
{ "B" : {
"score" : 77.11,
"color": "green"
}
},
{ "C" : {
"score" : 45.35,
"color": "blue"
}
} ]
var arrScores = [], arrColors = [];
for(var index=0; index<arrayData.length; index++){
var objVal = Object.values(arrayData[index]);
if(!!objVal && !!objVal[0] && !!objVal[0].score){
arrScores.push(objVal[0].score);
}
if(!!objVal && !!objVal[0] && !!objVal[0].color){
arrColors.push(objVal[0].color);
}
}
console.log(arrScores);
console.log(arrColors);
&#13;