【问题标题】:In array of objects turn object values into key/value pair在对象数组中将对象值转换为键/值对
【发布时间】:2020-08-04 11:49:35
【问题描述】:

我有兴趣使用chartkick,所以我需要将JS对象转换为以下格式:

var array = [{date:'01/01/2017',value1:200,value2:300,value3:400}, {date:'02/01/2017',value1:220,value2:330,value3:430},{date:'03/01/2017',value1:250,value2:330,value3:420}]

转为以下格式:

var arrayOne = [{'01/01/2017': 200}, {'02/01/2017': 220},{'03/01/2017':250}]

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript chartkick


    【解决方案1】:

    使用Array.prototype.map():

    const src = [{date:'01/01/2017',value1:200,value2:300,value3:400}, {date:'02/01/2017',value1:220,value2:330,value3:430},{date:'03/01/2017',value1:250,value2:330,value3:420}],
    
          result = src.map(({date,value1}) => ({[date]: value1}))
          
    console.log(result)
    .as-console-wrapper{min-height:100%;}

    【讨论】:

      【解决方案2】:

      你可以试试这个

      let sampleArray = [{date:'01/01/2017',value1:200,value2:300,value3:400}, {date:'02/01/2017',value1:220,value2:330,value3:430},{date:'03/01/2017',value1:250,value2:330,value3:420}]
      
      
         let finalArray = sampleArray.map(data => ({[data.date]:data.value1}))
      
      console.log(finalArray)

      输出将是

      [{01/01/2017: 200},{02/01/2017: 220},{03/01/2017: 250}]
      

      【讨论】:

        【解决方案3】:
         var array = [{date:'01/01/2017',value1:200,value2:300,value3:400}, {date:'02/01/2017',value1:220,value2:330,value3:430},{date:'03/01/2017',value1:250,value2:330,value3:420}];
            var mappedArray = array.map(item => {
            return {
                [item.date]: item.value1
            }
        })
        

        循环数组并将其映射到新结构

        【讨论】:

          【解决方案4】:

          试试这个:

           var array = [{date:'01/01/2017',value1:200,value2:300,value3:400}, {date:'02/01/2017',value1:220,value2:330,value3:430},{date:'03/01/2017',value1:250,value2:330,value3:420}]
           
          let final_array =  array.map(arr => {
              return {[arr.date] : arr.value1};
           })
          
          console.log(final_array)

          【讨论】:

            【解决方案5】:

            如果你想对每个 value1, value2, ... 进行循环处理

            var array = [{
              date: '01/01/2017',
              value1: 200,
              value2: 300,
              value3: 400
            }, {
              date: '02/01/2017',
              value1: 220,
              value2: 330,
              value3: 430
            }, {
              date: '03/01/2017',
              value1: 250,
              value2: 330,
              value3: 420
            }]
            
            const numberOfValues = 3;
            
            for (let i = 1; i <= numberOfValues; i++) {
              const mappedArray = array.map(x => {
                const result = {};
                result[x.date] = x["value" + i.toString()];
                return result;
              });
              console.log(mappedArray);
            }

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-05-10
              • 1970-01-01
              • 2021-02-14
              • 2018-09-11
              • 2019-09-13
              相关资源
              最近更新 更多