如何映射嵌入式对象数组?
How to map embedded object arrays?
我有这个数组:
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"]
我正在使用流星。我怎样才能做到这一点?
非常感谢。
如果保证每个内部对象只有一个键,你可以这样做:
arrayScores = arrayData.map((item)=>(Object.values(item)[0].score));
arrayColors = arrayData.map((item)=>(Object.values(item)[0].color));
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);
这是一个非常简单的问题,我建议您在 post 您的问题之前参考 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);
我有这个数组:
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"]
我正在使用流星。我怎样才能做到这一点? 非常感谢。
如果保证每个内部对象只有一个键,你可以这样做:
arrayScores = arrayData.map((item)=>(Object.values(item)[0].score));
arrayColors = arrayData.map((item)=>(Object.values(item)[0].color));
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);
这是一个非常简单的问题,我建议您在 post 您的问题之前参考 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);