【问题标题】:Create an object based on Array Javascript基于 Array Javascript 创建对象
【发布时间】:2017-09-22 04:24:03
【问题描述】:
let Array: any = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]

如何将此数组转换为如下所示的对象:

let Object: any = {
    time: {
        headerName: ""
    },
    monday: {
        headerName: "Monday"
    },
    tuesday: {
        headerName: "Tuesday"
    },
    wednesday: {
        headerName: "Wednesday"
    },
    thursday: {
        headerName: "Thursday"
    },
    friday: {
        headerName: "Friday"
    },
    saturday: {
        headerName: "Saturday"
    },
    sunday: {
        headerName: "Sunday"
    }
};

有什么想法吗?抱歉,我对 JavaScript 很陌生。我怎样才能写一个 for 循环,以便我可以达到这个结果?先谢谢各位了

【问题讨论】:

  • 你有什么尝试吗?
  • 是的,尝试循环遍历数组。但我被困在对象部分
  • 不确定如何继续。我是否用我想要的数据结构声明对象
  • 因为按照要求,我有两把钥匙。日期和标题名称。首先,如何创建框架或数据结构?
  • 考虑不要将变量命名为 ArrayObject。在这些变量的范围内访问具有相同名称的全局变量时可能会遇到问题

标签: javascript arrays object for-loop typescript


【解决方案1】:

var result = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"].reduce(function (acc, element) { 
     acc[element] = {};
     acc[element].headerName=element;
     return acc;
}, {time: ""});
console.log(result);

您可以使用reduce 在 JavaScript 中转换为对象。

any.reduce(function (acc, element) { 
     acc[element] = {};
     acc[element].headerName=element;
     return acc;
}, {time: ""})

【讨论】:

  • 发帖前请尝试运行!
  • 现在好多了:)
【解决方案2】:

试试这个

var any = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
var outputObj = { //create a new object with one default value
  time: {
    headerName: ""
  }
};
any.forEach(function(item) { //iterate the any array and then keep adding key and values to new Object
  outputObj[item] = {
    headerName: capitalizeFirstLetter(item)
  };
});

function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}

console.log( outputObj );

【讨论】:

  • 非常感谢Gurvinder。我可以知道any 数组是什么吗?
  • @blackdaemon 它是您的问题中给出的具有工作日名称的数组。
  • 哦,你的意思是Array。可以感谢Guvider
  • 让我试试那个方法
【解决方案3】:

var any = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];

var res ={};
res['time'] ={headername:""};
any.map(function(a){
res[a] = {headername:a}

})
console.log(res)

【讨论】:

    【解决方案4】:
    Using For loop.
    

    function toObject(arr) {
      var rv = {};
      for (var i = 0; i < arr.length; ++i)
        if (arr[i] !== undefined) rv[arr[i]] = {"headerName":arr[i]};
      console.log(rv);
    }
    toObject(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 2023-01-08
      • 2016-05-30
      • 1970-01-01
      • 2021-01-14
      相关资源
      最近更新 更多