以下是我的代码:
Var x=JSON.parse(Expression) .
运行此代码返回1并且我不明白为什么确切,即使我把“y”||“o”||“u”它返回1而不是3
非常感谢任何帮助
答案 0 :(得分:2)
在这种情况下你应该采用计数器变量或count
。另外,要检查特定字母,您应使用if (s[i] == "r" || s[i] == "a" || s[i] == "w")
。
function onlyYou(s) {
s = s.split("");
var count = 0;
for (var i = 0; i < s.length; i++) {
if (s[i] == "r" || s[i] == "a" || s[i] == "w") {
count = count + 1;
};
};
alert(count);
};
onlyYou("you");
答案 1 :(得分:2)
1-你总是得到'1'因为你在循环中初始化count
变量所以每次它再次得到值'0'。
function onlyYou(s){
s = s.split("");
for (var i = 0; i < s.length; i++){
var count = 0;
if (s[i] = "r"||"a"||"w"){
count = count + 1;
};
};
alert(count);
};
onlyYou("you");
2-如果您的参数为count=3
并将其与"you"
进行比较,为什么期望获得"raw"
?
y
不等于r
o
不等于a
u
不等于w
3-您的if语句错误,而不是检查它实际为s
变量赋值的值并更改它。
像这样改变你的状况:
function onlyYou(s){
s = s.split("");
for (var i = 0; i < s.length; i++){
var count = 0;
if (s[i] == "r"||s[i] == "a"|| s[i] == "w"){
count = count + 1;
};
};
alert(count);
};
答案 2 :(得分:2)
在for
循环的每次迭代中,变量count
设置为等于0
,然后评估if
语句,因此count只能相等无论输入如何,都可以0
或1
。
您应该在for循环之外声明count,如下所示:
function onlyYou(s){
s = s.split("");
var count = 0;
for (var i = 0; i < s.length; i++){
if (s[i] = "r"||"a"||"w"){
count = count + 1;
};
};
alert(count);
};
onlyYou("you");
此外,您的条件if (s[i] = "r"||"a"||"w")
不正确。首先,单个=
表示作业而不是评估,您应该使用==
,因为这会比较两个参数,s[i] = "r"
只是将变量s[i]
设置为具有值"r"
。另外,|| "a"
相当于|| true
,因为您没有将"a"
与任何内容进行比较。
条件应该是:
if (s[i] == "r" || s[i] == "a" || s[i] == "w")
答案 3 :(得分:0)
这段代码有些不妥之处:
1)您的env: node: No such file or directory
声明似乎已关闭。它正在做的是每次都设置TreeMap
。我非常怀疑这是预期的行为
2)循环内部有一个计数器,每次迭代都会重置
3)您传入测试的字符串似乎不会触发if
条件(假设您要检查集合{r,a,w}是否包含s[i] = "r"
) - {{1}会导致计数为0.
4)if
阻止或s[i]
阻止后不要使用分号
5)更多的挑剔 - 没有理由在这里拆分字符串。
"you"
答案 4 :(得分:0)
if条件总是评估为True。这是因为你写了=而不是==