仅当 JavaScript 中的三元运算符中的条件为真时才赋值
Posted
技术标签:
【中文标题】仅当 JavaScript 中的三元运算符中的条件为真时才赋值【英文标题】:Assign only if condition is true in ternary operator in JavaScript 【发布时间】:2013-02-07 04:28:17 【问题描述】:在 javascript 中可以做这样的事情吗?
max = (max < b) ? b;
换句话说,仅当条件为真时才赋值。如果条件为假,则什么也不做(不赋值)。这可能吗?
【问题讨论】:
有什么理由避免使用普通的if
语句吗?
max = (max
非常老套(max < b)?max = b:0;
【参考方案1】:
那么不要使用ternary operator,它需要第三个参数。如果您不想更改 max
,则需要将其重新分配给 max
(max = (max < b) ? b : max
)。
if-statement 更清晰:
if (max < b) max = b;
如果你需要它是一个表达式,你可以(ab)使用AND的短路评估:
(max < b) && (max = b)
顺便说一句,如果你想避免重复变量名(或表达式?),你可以使用maximum function:
max = Math.max(max, b);
【讨论】:
第二个比第一个快?因为在内存方面,接缝的使用量是一样的。 这个怎么样:max @UtkarshNarainSrivastava 没有为max
分配任何东西,如果行为不同,则性能无关紧要。【参考方案2】:
带有三元运算符的表达式必须同时具有两个值,即对于真假两种情况。
你可以
max = (max < b) ? b : max;
在这种情况下,如果条件为假,max
的值不会改变。
【讨论】:
我很好奇......如果条件为假,在幕后,它会运行一个操作吗?还是会自动替换。 我相信总是有操作:评估条件,然后分配两个不同值之一。当然,eval 本身可能会导致许多操作。【参考方案3】:如果条件为假,您可以将max
设置为自身。
max = (max < b) ? b : max;
或者您可以尝试使用&&
运算符:
(max < b) && (max = b);
或者为了让您的代码简单,只需使用if
。
if(max < v) max = b;
【讨论】:
【参考方案4】:我觉得三元比较合适 试试这个
(max < b) ? max = b : '';
【讨论】:
【参考方案5】:没有一个特定的运算符不是三元运算符,但你可以这样使用它:
max = (max < b) ? b : max;
【讨论】:
【参考方案6】:我认为更好的方法可能是
max = Math.max(max, b)
【讨论】:
【参考方案7】:你可以这样做:
(max < b) ? max = b : ''
【讨论】:
【参考方案8】:你可以试试:
(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);
【讨论】:
短路评估,确实必须是给定问题的较短的 sn-p【参考方案9】:三元运算符用于我们至少有两种可能的结果。
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 部分,那么你可以使用 this,但这并不是对所有问题都有用
let no = 10;
let max = 20;
no > max ? max = no : 0
这里我们只在条件为真时才为 max 变量赋值,否则,我们什么也不做
【讨论】:
【参考方案10】:没有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
。当id == "xyz"
时,它将设置selectedData
。如问题所述,仅当条件为真时才会赋值,否则 selectedData
将为空。
【讨论】:
【参考方案11】:您可以使用Logical AND assignment (&&=),而不是三元运算符。
基本示例
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。
【讨论】:
以上是关于仅当 JavaScript 中的三元运算符中的条件为真时才赋值的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从 javascript 中的条件(三元)运算符中获取这两个值?