我如何能够将以下内容简写为一行以保持我的代码清洁?
if ($scope.user.unit) {
$scope.user.unit = $scope.opts.unit[$scope.user.unit.id - 1];
} else {
$scope.user.unit = $scope.opts.unit[0];
}
答案 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];