将字符串转换为对象数组

Sea*_*ysa 0 javascript arrays object

我从“ HHMM-HHMM \ nHHMM \ nHHMM”格式(小时和分钟)的文本区域字符串开始。所需的输出是一组对象,这些对象键入第一个数字作为开始:第二个数字作为结束,例如:

[
  {
    start: 0900,
    end: 1000
  },
  {
    start: 1200,
    end: 1300
  },
]
Run Code Online (Sandbox Code Playgroud)

在下面的代码中,我按行分割了初始字符串,以使它们显示为数组:

splitting_array = ["0900-1000", "1200-1300"]
Run Code Online (Sandbox Code Playgroud)

接下来,我尝试使用array.map将每个字符串映射到映射到开始和结束属性的对象的新数组。我的挂断在这里,我可以使用连字符拆分第一和第二个数字,但是我不知道如何从那里进行对象属性映射(开始:和结束:)。感谢您的任何建议。

var free_time_hours = document.getElementById('ftid')
  free_time_hours.addEventListener("blur", save_free_time_hours)

function save_free_time_hours () {

  // todo: break the new lines into array elements. Reset each time in case the user input updates

  var splitting_array = free_time_hours.value.split(/\n/)

  // todo: use the map function to map each string to an object with start and end properties

  var split_objects = splitting_array.map(function(str) {
    var box = str.split('-') // box[0] = 1200, box[1] = 1300
    var obj = {}
  // stuck here

  })

  // console.log("objectified start/end values")
  // console.log(split_objects)

}
Run Code Online (Sandbox Code Playgroud)

rgt*_*ree 5

因此,String.split返回一个字符串数组,该数组由(但不包括)传入的拆分字符串拆分而成,因此box[0]您的起点也box[1]将是终点。然后,您只需要返回要映射到您的字符串项的对象。

var splitting_array = ["0900-1000", "1200-1300"];
var split_objects = splitting_array.map(function(str) {
  var box = str.split('-');
  return {start: box[0], end: box[1]}
});
console.log(split_objects); // [{start:"0900", end:"1000"}, {start:"1200", end:"1300"}]
Run Code Online (Sandbox Code Playgroud)

  • @MaxLeizerovich 好吧,他在问题中想要的输出不是真正的输出,因为 OP 有“0900”,显然它实际上会输出为“900”。我只是假设 OP 打算将它们保留为字符串。我可以添加评论,当然。 (2认同)