我需要检查字符串是否等于定义的值并且对象是否具有hash
键。
我对此非常困惑:
var my_string = 'some_string';
var my_obj = {'hash':'4010f89a05c236cd4f3a5c7558af0e70dc4216454d2d5155a285bfbad752ce51f9510272821a254'}
console.log((my_string == 'some_string' && my_obj['hash']));
返回4010f89a05c236cd4f3a5c7558af0e70dc4216454d2d5155a285bfbad752ce51f9510272821a254
预期true
或false
(在此示例中为预期true
)。
答案 0 :(得分:7)
它正常工作。
(my_string == 'some_string' && my_obj['hash'])
等于"4010f89a05c236cd4f3a5c755..."
,这是真实的。例如,在if
语句中用作条件就可以了。
您也可以将其转换为实际的布尔值:
!!(my_string == 'some_string' && my_obj['hash'])
答案 1 :(得分:4)
一种选择是使用in
运算符检查对象中是否存在特定键。我更喜欢这种方法,因为JavaScript有一些非常糟糕的值被认为是假的,比如0
。
console.log((my_string == 'some_string' && ('hash' in my_obj)));
答案 2 :(得分:2)
&&操作员返回&&amp ;;右侧的任何内容。只要这两个值都是这样的:
const foo = 'foo';
const bar = 'bar';
const foobar = foo && bar;
console.log(foobar);
然后,返回的结果将作为if语句的结果强制转换为true。重要的是要意识到if语句将值强制转换为布尔值和&&声明没有。
答案 3 :(得分:1)
&安培;&安培;每次都不会返回布尔值。
当你使用&&如果两者都为true,则返回第二个值。 当你使用||如果两者都为真,则返回第一个值。
let one = "Cat" && "Dog"
let zwo = "Cat" || "Apple"
一个人回来了。两人返回Cat
答案 4 :(得分:1)
您可以使用三元操作并使其返回true或false。
像这样:
console.log( (my_string == 'some_string' && my_obj['hash']) ? true : false );
更多信息: