简写Javascript if语句

时间:2014-10-06 21:09:29

标签: javascript

我如何能够将以下内容简写为一行以保持我的代码清洁?

if ($scope.user.unit) {
    $scope.user.unit = $scope.opts.unit[$scope.user.unit.id - 1];
} else {
    $scope.user.unit = $scope.opts.unit[0];
}

6 个答案:

答案 0 :(得分:5)

 $scope.user.unit =
 $scope.opts.unit[$scope.user.unit ? $scope.user.unit.id - 1 : 0];

答案 1 :(得分:4)

使用三元运算符?

$scope.user.unit = $scope.user.unit ?
    $scope.opts.unit[$scope.user.unit.id - 1] :
    $scope.opts.unit[0];

您还可以通过玩变量来使其更具可读性(并且更清晰):

var userUnit = $scope.user.unit;
var optsUnit = $scope.opts.unit;

var newUnit = optsUnit[userUnit ? (userUnit.id - 1) : 0];

$scope.user.unit = newUnit;

答案 2 :(得分:3)

您的代码没有什么可以原谅的,但您可以这样做:

$scope.user.unit = $scope.user.unit ? 
    $scope.opts.unit[$scope.user.unit.id - 1] : 
    $scope.opts.unit[0];

一般来说,简洁的代码是一件好事,但重要的是(通过语言基础上的语言)理解"简洁"之间的细微差别。和"混淆"。

答案 3 :(得分:2)

三元!

$scope.user.unit = $scope.user.unit ? $scope.opts.unit[$scope.user.unit.id - 1] : $scope.opts.unit[0];

答案 4 :(得分:1)

$ scope.user.unit = $ scope.opts.unit [$ scope.user.unit? $ scope.user.unit.id - 1:0];

答案 5 :(得分:-1)

您可以使用||运算符在缺少时提供备用对象:

$scope.user.unit = $scope.opts.unit[($scope.user.unit || {id:1}).id - 1];