繁体   English   中英

将字符串转换为对象数组

[英]Convert string to array of objects

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

[
  {
    start: 0900,
    end: 1000
  },
  {
    start: 1200,
    end: 1300
  },
]

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

splitting_array = ["0900-1000", "1200-1300"]

接下来,我尝试使用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)

}

因此, 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"}] 

简单的解决方案:

 var splitting_array = ["0900-1000", "1200-1300"]; var result = []; for(var i = 0; i< splitting_array.length;i++){ var startTime = splitting_array[i].split("-")[0]; var endTime = splitting_array[i].split("-")[1]; var obj = {}; obj["start"] = startTime; obj["end"] = endTime; result.push(obj); } console.log(result); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM