Javascript分配多个数组
Javascript assigning multiple arrays
我需要在一个特定的函数中使用各种数组,但我忍不住认为我这样做的效率非常低:
function GetTimeLeft(){
var TimeUnformatted = document.querySelectorAll('[id="SomeIdName"]')[0].innerText.match(/'d{1,}d's'd{1,}h/ig);
var i;
if (TimeUnformatted){
var Daysunformatted = [];
var Hoursunformatted = [];
var DaysFormatted = [];
var HoursFormatted = [];
var DaysToSeconds = [];
var HoursToSeconds = [];
var TimeInSeconds = [];
for (i=0;i<TimeUnformatted.length;i++){
Daysunformatted[i] = TimeUnformatted[i].match(/'d{1,}d/)[0];
Hoursunformatted[i] = TimeUnformatted[i].match(/'d{1,}h/)[0];
if (Daysunformatted[i]) DaysFormatted[i] = Number(Daysunformatted[i].match(/'d{1,}/)[0]);
if (Hoursunformatted[i]) HoursFormatted[i] = Number(Hoursunformatted[i].match(/'d{1,}/)[0]);
if (DaysFormatted[i]) DaysToSeconds[i] = DaysFormatted[i]*24*60*60;
if (HoursFormatted[i]) HoursToSeconds[i] = HoursFormatted[i]*60*60;
if (DaysToSeconds[i] && HoursToSeconds[i]) TimeInSeconds[i] = DaysToSeconds[i] + HoursToSeconds[i];
}
return TimeInSeconds;//an Array.
} else {
return [0];
}
}
编辑:为了澄清,因为我表达得很糟糕。我试着"在旅途中分配",没有初始的var语句,但javascript大喊大叫,告诉我他没有期望的"[":function GetTimeLeft(){
var TimeUnformatted = document.querySelectorAll('[id="SomeIdName"]')[0].innerText.match(/'d{1,}d's'd{1,}h/ig);
var i;
if (TimeUnformatted){
for (i=0;i<TimeUnformatted.length;i++){
var Daysunformatted[i] = TimeUnformatted[i].match(/'d{1,}d/)[0];
var Hoursunformatted[i] = TimeUnformatted[i].match(/'d{1,}h/)[0];
if (Daysunformatted[i]) var DaysFormatted[i] = Number(Daysunformatted[i].match(/'d{1,}/)[0]);
if (Hoursunformatted[i]) var HoursFormatted[i] = Number(Hoursunformatted[i].match(/'d{1,}/)[0]);
if (DaysFormatted[i]) var DaysToSeconds[i] = DaysFormatted[i]*24*60*60;
if (HoursFormatted[i]) var HoursToSeconds[i] = HoursFormatted[i]*60*60;
if (DaysToSeconds[i] && HoursToSeconds[i]) var TimeInSeconds[i] = DaysToSeconds[i] + HoursToSeconds[i];
}
return TimeInSeconds;//an Array.
} else {
return [0];
}
我知道我可以做多个任务,但是,没有更好的方法来做我想做的吗?
这行代码的问题是变量,去掉var
,它就像上面的代码一样工作。
Daysunformatted[i] = TimeUnformatted[i].match(/'d{1,}d/)[0];
我能看到改进代码的唯一方法是将reg exp移出for循环。
var reDays = /'d{1,}d/;
var reHours = /'d{1,}h/;
for (i=0;i<TimeUnformatted.length;i++){
Daysunformatted[i] = TimeUnformatted[i].match(reDays)[0];
Hoursunformatted[i] = TimeUnformatted[i].match(reHours)[0];
您可以使用捕获组来获取小时数,这样您就不必进行第二次匹配,从而减少d/h。
var reDays = /('d{1,})d/;
var TimeUnformatted = "10d 1h";
Daysunformatted[i] = (TimeUnformatted[i].match(reDays) || [,])[1];
相关文章:
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 在将csv文件中的数据分配给数组变量时增强了d3代码
- 当数组在angularjs中没有可比较的值时,如何分配默认值
- 使用mysql为JSON php数组分配多个列值
- 处理对象数组并将它们以 4 个为一组进行分配
- 可以't分配给一个对象数组javascript
- Javascript原型通用Enquries和通过数组索引分配Id
- 通过程序将对象分配给数组
- 将随机整数分配给数组中的项,summa应该是一个固定的数字
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 选择多个复选框并将值分配给数组 - HTML/Javascript
- 如何在 ng-repeat 中按键分配对象数组
- JS循环图像文件夹,预加载它们并分配给数组
- Java 脚本数组分配错误
- 如何使用数组分配下拉选项值
- Javascript-数组分配
- 数组分配Javascript
- 在jquery中为多维数组分配索引和值
- Jquery -循环跨度,从数组分配宽度