我一直在学习JS,但似乎无法弄清楚为什么布尔值总是返回true或false。
因此,我相信我了解JS中真实/错误情况的基本知识,但我似乎无法正确地做到这一点。我知道存在数据类型问题,(不能使不同的数据类型做不同的事情)。
function lastCharacter(char1, char2) {
if (char1[-1] === '' && char2[-1] === '') {
return true;
} else {
return false;
}
}
console.log(lastCharacter('apple', 'pumpkine'));
或
function lastCharacter(char1, char2) {
if (char1[-1] === char2[-1]) {
return true;
} else {
return false;
}
}
console.log(lastCharacter('apple', 'pumpkina'));
定义一个函数lastCharacter
,该函数接受两个字符串作为参数。
如果两个字符串都以相同的字符结尾,则lastCharacter
应该返回true。
否则,lastCharacter
应该返回false。
它们要么返回true,要么总是false。谁能帮我吗?
答案 0 :(得分:4)
您需要一种不同的方法来获取字符串的最后一个字符,最好使用String#slice
和一个用于获取最后一个字符的负值。然后比较并返回结果。
Random
使用返回select e.*,d.*,concat(c.col1,c.col2,c.col3.... ,',')
from Employees e,Departments d,Cars c
where
e.department_id=d.department_id
and d.emp_id=e.emp_id
order by e.emp_id;
的索引function lastCharacter(string1, string2) {
return string1.slice(-1) === string2.slice(-1);
}
console.log(lastCharacter('apple', 'pumpkine'));
和返回空白字符串的-1
获取空字符串的最后一个字符的比较。
undefined
答案 1 :(得分:3)
您可以使用切片
function lastCharacter(char1, char2) {
return char1.slice(-1) === char2.slice(-1)
}
console.log(lastCharacter('apple', 'pumpkina'));
console.log(lastCharacter('apple', 'snake'));
或者您也可以访问最后一个索引
function lastCharacter(char1, char2) {
return char1[char1.length-1] === char2[char2.length-1]
}
console.log(lastCharacter('apple', 'pumpkina'));
console.log(lastCharacter('apple', 'snake'));
答案 2 :(得分:0)
JavaScript中没有负数组索引,您不必使用char1[-1]
来代替char1[char1.length - 1]
。
访问一个字符串字符(例如"abc[1]
)的长度始终为1,它将永远不等于""
。您的第二个功能更有意义。
也
if(condition) { return true; } else { return false; }
等于
return condition;
答案 3 :(得分:0)
符号[-1]
在JavaScript中并不隐含表示“从字符串末尾开始的一个字符”。您可以使用str[str.length - 1]
。 (如果您预期可能会出现空的源字符串,则也要进行检查,以免出现完全相同的问题。)
代替返回if/else
或true
的{{1}},只需返回逻辑表达式的结果即可:
false
无论两个 return char1[char1.length - 1] === '' && char2[char2.length - 1] === '';
比较都返回===
还是true
,因此总表达式值必须是其中之一。但是,总的来说,如果您要绝对确保自己以布尔值结尾,则可以在表达式的前面加上false
以强制执行标准JavaScript“ truthy-falsy”评估:
!!