65

有可能在 JavaScript 中做这样的事情吗?

max = (max < b) ? b;

换句话说,仅当条件为真时才赋值。如果条件为假,则什么也不做(不赋值)。这可能吗?

4

11 回答 11

114

然后不要使用三元运算符,它需要第三个参数。如果您不希望它更改max,则需要重新分配( )。maxmax = (max < b) ? b : max

if 语句更清晰:

if (max < b) max = b;

如果你需要它是一个表达式,你可以(ab)使用AND的短路评估:

(max < b) && (max = b)

顺便说一句,如果你想避免重复变量名(或表达式?),你可以使用最大函数

max = Math.max(max, b);
于 2013-02-21T18:07:12.213 回答
16

带有三元运算符的表达式必须同时具有两个值,即真假两种情况。

但是你可以

max = (max < b) ? b : max;

在这种情况下,如果条件为假,则值max不会改变。

于 2013-02-21T18:04:29.093 回答
9

如果条件为假,您可以设置max为自身。

max = (max < b) ? b : max;

或者您可以尝试使用&&运算符:

(max < b) && (max = b);

或者为了让您的代码简单,只需使用if.

if(max < v) max = b;
于 2013-02-21T18:04:21.867 回答
6

我认为三元更合适试试这个

(max < b) ? max = b : '';
于 2017-08-18T08:31:59.527 回答
4

没有一个特定的运算符不是三元运算符,但您可以像这样使用它:

max = (max < b) ? b : max;
于 2013-02-21T18:03:34.913 回答
2

我认为更好的方法可能是

max = Math.max(max, b)
于 2018-02-16T12:52:15.583 回答
2

你可以这样做:

(max < b) ? max = b : ''
于 2019-11-22T12:04:13.317 回答
2

你可以试试:

(max < b) && (max = b);

看这个例子:

let max = 10;
let b = 15;
(max < b) && (max = b)// this will be true
console.log("max=", max);

let maxx = 10
let bb = 5;
(maxx < bb) && (maxx = bb)// this will be false
console.log("maxx=", maxx);

于 2020-08-12T10:57:11.870 回答
1

三元运算符用于我们至少有两个可能的结果。

let no = 10;
let max = 20;

max = no > max ? no : max

如果您只想使用 if 而不是 else,那么我建议您使用 if not 三元运算符。

let no = 10;
let max = 20;
    
if (no > max){
   max = no
}

如果你想使用三元运算符,但又不想使用 else 部分,那么你可以使用这个,但这并不是对每个问题都有用

let no = 10;
let max = 20;

no > max ? max = no : 0

在这里,我们仅在条件为真时才为 max 变量赋值,否则,我们什么也不做

于 2022-01-12T05:39:57.580 回答
0

没有ES6的例子,我们可以这样使用:

let list = [{id: "abc", name: "test1"}, {id: "xyz", name: "test2"}]
let selectedData = {};
      list.some((exp) => {
        return (
          exp.id == "xyz" &&
          ((selectedData = exp), true)
        );
      })
console.log(selectedData);

在反对票后添加描述: 只需添加描述来解释我的解决方案。如果你有一个对象数组,并且你想要只满足一个条件,那么我们可以使用some. 它将设置selectedDataid == "xyz". 如问题中所述,仅当条件为真时才会赋值,否则selectedData将为空。

于 2020-09-25T02:20:20.647 回答
0

您可以使用逻辑与赋值 (&&=)来代替三元运算符

基本示例

let output = false;
output &&= true;
console.log(output)

无法重新分配,因为output已定义为false

const b = 10;
const max = 1;
let sum = max < b;

sum &&= 'new value';
console.log(sum);

返回一个字符串,因为该变量sum已被定义为true

于 2022-01-01T14:24:24.237 回答