我想使用两个Not和一个以及布尔值来测试变量既不是大写也不是小写。
到目前为止,我使用了此代码,但它并没有按要求运行:
else if ((x[i]) !== (x[i].toUpperCase()) && (x[i]!== x[i].toLowerCase()) ){
x.splice(x[i], 1);
}
此代码用于对输入的字符串进行排序的函数,但首先对大写进行排序。
这是完整的代码,除了布尔逻辑和我使用的数组方法之外,我也愿意理解创建这个函数的更好方法。
function alpha(str){ // United States
var x = str.split(""); // [U,n,i,t,e,d,S,t,a,t,e,s]
var cap = [];
var small = [];
for (var i = 0; i<x.length; i++){
if (x[i] == x[i].toUpperCase()){
cap.push(x[i]);
}
else if ((x[i]) !== (x[i].toUpperCase()) && (x[i]!== x[i].toUpperCase()) ) {
x.splice(x[i], 1);
}
else {small.push(x[i]);}
}
var z = cap.sort();
var y = small.sort();
return z.concat(y).join("");
}
请注意第二个if if语句只是有用,因为代码在输出的开头添加了一个空的空格字符串,我不知道它来自哪里,所以如果你有任何想法请告诉我即使不使用第二个if,如何对此进行排序。
答案 0 :(得分:1)
在ASCII表中,大写字母首先出现。这就是为什么当你按字母顺序排序时它们首先出现的原因。这是指向Wikipedia上的页面的链接,该页面显示首先出现大写字母的表格及其数字等价物。它甚至可以打印。
另外,我冒昧地简化了你的代码。好像.splice()似乎没必要。
function alpha( str ) {
var x = str.split(""); // [U,n,i,t,e,d,S,t,a,t,e,s]
var cap = [];
var small = [];
var length = x.length;
for (var i = 0; i < length; i++) {
if (x[i] === x[i].toUpperCase()) {
cap.push(x[i]);
} else if (x[i] === x[i].toLowerCase()) {
small.push(x[i]);
}
}
return cap.sort().concat(small.sort()).join("");
}
也许解释一下你要做什么?它很可能以某种形式完成,你肯定来到了正确的地方找到答案。
答案 1 :(得分:1)
这是你想要做的吗?
var str = "United States";
function alpha(str) {
return str.split('').sort().join('');
}
alert(alpha(str));
&#13;
答案 2 :(得分:0)
在所有编程语言中(据我所知),布尔表达式总是从左到右依次用括号进行评估。
因此,在下面的示例中,首先调用my_func(),然后如果完整表达式有可能变为true,则调用my_other_func()
if (my_func() && my_other_func()) {
// I only get here if my_func() AND my_other_func() return true
// If my_func() returns false, my_other_func() is never called
}
&#34;或&#34;同样如此。以下示例中的运算符
if (my_func() || my_other_func()) {
// I only get here if my_func() OR my_other_func() return true
// If my_func() returns true, my_other_func() is not called
}
回到你的代码,详细介绍了这部分内容(为了更好的可读性,我对其进行了重新格式化):
if (x[i] == x[i].toUpperCase()){
// only uppercase here
cap.push(x[i]);
} else if (x[i] !== x[i].toUpperCase() && x[i] !== x[i].toUpperCase()) {
// tested twice the same thing, so Im really sure that its not uppercase :D
// only lowercase here
x.splice(x[i], 1);
} else {
// I will never reach this
small.push(x[i]);
}
我不确定你想做什么,但我希望这些评论有助于理解你的代码。