我从“HHMM-HHMM \ nHHMM \ nHHMM”格式(小时和分钟)的文本区域字符串开始。所需的输出是一个对象数组,用于键入要开始的第一个数字:第二个到结束数字,如:
[
{
start: 0900,
end: 1000
},
{
start: 1200,
end: 1300
},
]
在下面的代码中,我逐行拆分了初始字符串,以便它们显示为数组:
splitting_array = ["0900-1000", "1200-1300"]
接下来,我尝试使用array.map将每个字符串映射到映射到start和end属性的新对象数组。我的挂断在这里,我可以使用hypen分割第一个和第二个数字,但我不知道如何从那里做对象属性映射(start:和end :)。感谢您的任何建议。
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)
}
答案 0 :(得分:3)
因此,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"}]

答案 1 :(得分:1)
简单的解决方案:
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);