如何映射嵌入式对象数组?

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);