我怎样才能返回两个值?

时间:2015-04-10 03:12:56

标签: javascript return-value

我有一个填充标签的数据库列。它是日期格式,因此它将条目保存为yy-mm-dd 00:00.0。我使用此代码将其更改为列出时所需的格式。

var yyyymmdd = value.split(" ")[0].split("-");
return yyyymmdd[1] + "-" + yyyymmdd[2] + "-" + yyyymmdd[0];

现在我需要改变颜色,这是我用来做的代码。

if(value.dead){
         $(element).css({"color": "#E33"});
      }else if(value.pairout){
         $(element).css({"color": "#0c9999"});

      }
return value.Date;

我的问题是:如何将这两个代码组合在一起,使它们一起重新排序日期并可能改变颜色。

2 个答案:

答案 0 :(得分:4)

通过return从函数返回单个值。此值可以是任何基元,对象或表达式的结果。因此,如果要返回多个值,可以使用对象或数组。

答案 1 :(得分:1)

如果这两个功能是单独的功能,例如getDate(value)getColor(value),请执行var combined = { date: getDate(value), color: getColor(value) };并返回合并。颜色设置可能需要重构,以便不将颜色分配给$(element),而只是进行检测并返回颜色代码。

像这样:

function getDate(value) {
  var yyyymmdd = value.split(" ")[0].split("-");
  return yyyymmdd[1] + "-" + yyyymmdd[2] + "-" + yyyymmdd[0];
}

function getColor(value) {
  if (value.dead) return '#E33';
  if (value.pairout) return '#0c9999';
  
  return null; //not handled
}

function getCombined(aDate, value) {
  return { date: getDate(aDate), color: getColor(value) };
}

var aDate = '15-01-01 15-02-14';
var foo = { dead : true, pairout: false };

var value = getCombined(aDate, foo);

if (value.color) $('#foo').css({ color : value.color });
$('#date').text(value.date);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id='foo'>FOO!</div>
<div id='date'></div>