【问题标题】:How to map embedded object arrays?如何映射嵌入式对象数组?
【发布时间】:2018-06-28 14:50:39
【问题描述】:

我有这个数组:

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。我怎么能做到这一点? 非常感谢。

【问题讨论】:

  • var arrayScores = arrayData.map((v) => Object.values(v)[0].score); var arrayColors = arrayData.map((v) => Object.values(v)[0].color);
  • 这个问题与meteor无关,纯javascript。

标签: javascript arrays json object meteor


【解决方案1】:

如果保证每个内部对象只有一个键,你可以这样做:

arrayScores = arrayData.map((item)=>(Object.values(item)[0].score));
arrayColors = arrayData.map((item)=>(Object.values(item)[0].color));

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • @ChiragRavindra 但我就是这样做的人 ;).. 哈哈
    【解决方案3】:

    这是一个非常简单的问题,我建议您在此处发布您的问题之前参考 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);

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 2021-07-26
      • 2021-02-08
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 2021-06-23
      相关资源
      最近更新 更多