【问题标题】:How to convert two arrays into an object in JavaScript?如何在 JavaScript 中将两个数组转换为一个对象?
【发布时间】:2021-07-26 12:02:52
【问题描述】:

我有两个数组,一个用于球员姓名:

players_name = ['John','Paul','Jack',...]

另一个是玩家的积分:

points = [23,13,18,...]

我想知道是否可以(不是手动)将这两个数组转换成一个看起来像这样的对象:

players_results = {
    'John': { point: 23},
    'Paul': { point: 13},
    'Jack': { point: 18},
}

谢谢!

【问题讨论】:

  • 是的,有可能。

标签: javascript arrays object


【解决方案1】:

您可以使用Object.fromEntries() 来获得所需的结果。

fromEntries 获取一个数组数组(嵌套数组包含两个值,第一个是键,第二个是值),然后将其转换为对象。试试这个-

const players_name = ['John','Paul','Jack'];
const points = [23,13,18];

const result = Object.fromEntries(
  players_name.map((name, i) => ([name, {point: points[i]}]))
);

console.log(result);
.as-console-wrapper{min-height: 100%!important; top: 0}

注意:使用name 作为对象的键不是一个好主意。不同人的名字可能相似。改为使用唯一值作为键。

【讨论】:

    【解决方案2】:

    const players_name = ['John', 'Paul', 'Jack']
    const points = [23, 13, 18]
    
    const result = players_name.reduce((prev, item, i) => {
      prev[item] = {
        point: points[i]
      }
      return prev;
    }, {});
    
    console.log(result)

    【讨论】:

      【解决方案3】:

      const players_name = ['John','Paul','Jack'];
          
      const points = [23,13,18];
      
      const players_results = {}
      
      players_name.forEach((data, index) => {
        players_results[data] = {
            point: points[index]
          }
      });
      
      console.log(players_results);

      【讨论】:

        【解决方案4】:

        您可以使用Array#forEach

        const players_name = ['John','Paul','Jack']
        const points = [23,13,18]
        
        players_results ={};
        
        players_name.forEach((a,i)=>{
          players_results[a] = {point:points[i]}
        })
        
        console.log(players_results)

        【讨论】:

          【解决方案5】:

          我不知道你是否认为这是手动的,但你可以使用这个功能:

          let players_name = ['John','Paul','Jack'];
          
          let points = [23,13,18];
          
          function tabToObject(tab1, tab2) {
            let lengthMin = Math.min(tab1.length, tab2.length);
            let returnObject = new Object();
            for (let i = 0; i < lengthMin; i++) {
              returnObject[tab1[i]] = {point: tab2[i]};
            }
            return returnObject;
          }
          
          console.log(tabToObject(players_name, points))

          【讨论】:

            【解决方案6】:

            可以使用reduce数组方法Array.prototype.reduce()

            const players_name = ['John','Paul','Jack'];
            const points = [23,13,18];
            
            const object = players_name.reduce((acc, cur, index) => {
              acc[cur] = {points: points[index]};
              return acc;
            }, {});
            console.log(object);

            【讨论】:

              【解决方案7】:

              最简单的方法就是按照我的想法去做

              players_name.forEach((name, index) => {
                  players_results[name] = {point: points[index]}
              })
              

              【讨论】:

                【解决方案8】:

                方括号表示法是一种非常有用的语法,可以帮助您在使用 JavaScript 对象时轻松摆脱令人讨厌的情况。

                var players_name = ['John','Paul','Jack'];
                var points = [23,13,18];
                
                function arrayToObject(arr1,arr2){
                  obj = {};
                  for(i in arr1){;
                    obj[arr1[i]] = arr2[i];
                  }
                  return obj;
                }
                
                x = arrayToObject(players_name, points)
                console.log(x);
                

                【讨论】:

                  猜你喜欢
                  • 2013-11-21
                  • 2018-08-27
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多