一种更易读的方法吗?

时间:2010-08-25 05:34:58

标签: javascript

我知道有一种更易读的写法:

var string = ( 
  (r.d != 0 ? r.d + (r.d == 1 ? ' day' : ' days') : '' ) +
  (r.h != 0 ? r.h + (r.h == 1 ? ' hour' : ' hours') : '' ) +
  (r.m != 0 ? r.m + (r.m == 1 ? ' minute' : ' minutes') : '' ) +
  (r.s != 0 ? r.s + (r.s == 1 ? ' second' : ' seconds') : '' ));

3 个答案:

答案 0 :(得分:6)

尝试更具可读性的内容:

function singleOrPlural(val, single, plural){
  if(val == 1)
    return val + ' ' + single;
  if(val > 1)
    return val + ' ' + plural;
  return '';
}

用作:

singleOrPlural(r.day, 'day', 'days')

您甚至可以坚持将其添加到prototype,最后添加r.days.singleOrPlural('day', 'days'),但我认为这不是必需的。

答案 1 :(得分:2)

我会用这样的东西:

function pluralize(aVal, aSuffix) {
   var r = '';

   if (aVal != 0) {
      r = aVal + ' ' + aSuffix + (aVal > 1 ? 's' : '');
   }

   return r;
}

var string = pluralize(r.d, 'day') + pluralize(r.h, 'hour') + 
     pluralize(r.m, 'minute') + pluralize(r.s, 'second')

编辑:将该功能重命名为pluralize

答案 2 :(得分:0)

function getvalue(val, unit) 
{
        if(val>0) 
            return val + unit + (val > 1 ? 's' : '');
        else
            return '';
}

var string = gets(r.d, 'day') + gets(r.h, 'hour') + gets(r.m, 'minute') + gets(r.s, 'second');