Javascript 有没有办法把这个写得更短?
我只是想知道我是否可以把这个循环写得更短Javascript 有没有办法把这个写得更短?,javascript,dry,Javascript,Dry,我只是想知道我是否可以把这个循环写得更短 var m, d, y // date.length === format.length for (var i = 0, len = format.length; i < len; i++) { if (/m/.test(format[i])) m = date[i] if (/d/.test(format[i])) d = date[i] if (/y/.test(format[i])) y = date[i] } var m,d
var m, d, y
// date.length === format.length
for (var i = 0, len = format.length; i < len; i++) {
if (/m/.test(format[i])) m = date[i]
if (/d/.test(format[i])) d = date[i]
if (/y/.test(format[i])) y = date[i]
}
var m,d,y
//date.length==format.length
for(变量i=0,len=format.length;i
您的示例足够短,因此我不会对其进行更改,但为了示例起见,您可以使代码更具动态性,如下所示:
var obj = {};
var mdy = ['m', 'd', 'y']
var curLetter;
for (var i = 0, len = format.length; i < len; i++) {
curLetter = mdy[i];
if ((new Regexp(curLetter)).test(format[i])) obj[curLetter] = date[i];
}
var m = obj.m;
var d = obj.d;
var y = obj.y;
var obj={};
变量mdy=['m','d','y']
var curLetter;
for(变量i=0,len=format.length;i
最后三行您不需要,如果您只需要obj的属性。语法保存?
保存一个var;把它放在头上
// date.length === format.length
for (var m, d, y, i = 0, len = format.length; i < len; i++) {
if (/m/.test(format[i])) m = date[i]
if (/d/.test(format[i])) d = date[i]
if (/y/.test(format[i])) y = date[i]
}
//date.length==format.length
for(var m,d,y,i=0,len=format.length;i
或者可能是条件句:
for (var m, d, y, i = 0, len = format.length; i < len; i++) {
(/m/.test(format[i])) ? m = date[i]
:(/d/.test(format[i])) ? d = date[i]
:(/y/.test(format[i])) y = date[i]
: continue;
}
for(变量m,d,y,i=0,len=format.length;i
但这改变了逻辑,我不确定这是不是想要的
也许您可以添加一个continue以加快执行速度,但同样不能确定逻辑
for (var m, d, y, i = 0, len = format.length; i < len; i++) {
if (/m/.test(format[i])){
m = date[i]
//jump to next since this has been found
continue;
}
if (/d/.test(format[i])){
d = date[i]
continue;
}
if (/y/.test(format[i])){
y = date[i]
continue;
}
}
for(变量m,d,y,i=0,len=format.length;i
您可以使用eval()
编写更通用的循环
var parts = ['d', 'm', 'y'],
part,
indexOfPart,
d, m, y;
// Iterate over the variable you want to assign
for (int i = 0; i < parts.length; i++) {
part = parts[i];
// Find out where in the format is the current part of the date
indexOfPart = format.indexOf(part);
// If it is present, use eval to assign your variable
if (indexOfPart !== -1) {
eval(part + " = date[" + indexOfPart + "];");
}
}
var parts=['d','m','y'],
部分
indexOfPart,
d、 m,y;
//迭代要分配的变量
对于(int i=0;i
如果你试图解释你想要实现的目标,那么给你一个解决方案会更容易。如果格式[i]
中的字符串与“m”
、d
或y
匹配,那么这段代码实际上可以做任何事情,它只需将m
、d
或y
分别赋给日期[i]/code>。