我不确定我在这里做错了什么。我使用indexOf的第一个实例完全正常,但是当我第二次使用它时,它没有返回我期待的结果。
SELECT ini_range.start_date,
end_range.end_date,
ini_range.weekno,
end_range.weekno
FROM
(
SELECT r.* ,
(SELECT count(distinct r2.weekno)
FROM
(
SELECT *
FROM t_week
WHERE weekno % 5 = 1
) r2
WHERE r2.weekno <= r.weekno
) as rank
FROM
(
SELECT *
FROM t_week
WHERE weekno % 5 = 1
) r
) ini_range
JOIN
(
SELECT r.* ,
(SELECT count(distinct r2.weekno)
FROM
(
SELECT *
FROM t_week
WHERE weekno % 5 = 0
or weekno = (SELECT max(weekno) FROM t_week)
) r2
WHERE r2.weekno <= r.weekno
) as rank
FROM
(
SELECT *
FROM t_week
WHERE weekno % 5 = 0
or weekno = (SELECT max(weekno) FROM t_week)
) r
) end_range
ON ini_range.rank = end_range.rank
如果arr [0]中没有来自arr [1]的元素,变异应该返回false,否则返回true。
答案 0 :(得分:3)
你的代码不起作用,因为当你说:
res.indexOf("f") != -1
这意味着:&#34;我找到了一个f&#34;,但是你正在对待它,好像它意味着&#34;我没有找到f&#34;。
如果您发现“f&#39;”,并且您返回true,则您希望返回false。翻转你的真假案例:
if (res.indexOf("f") != -1) {
return false;
} else {
return true;
}
你的for循环也是错误的,因为x从0开始,所以你需要转到&lt;长度不是&lt; =你的字符串的长度。
for (var x=0; x < arr[1].split("").length; x++) {
现在您的代码可以按照您的意愿运行。
答案 1 :(得分:2)
刚编辑了你的代码。点击<p>
进行检查:
function mutation(arr) {
//return arr;
res = "";
for (var x=0; x< arr[1].split("").length; x++) {
res += arr[0].indexOf(arr[1].split("")[x]) > -1 ? 't' : 'f';
}
return res.indexOf('f') > -1;
}
$('p').click(function(){
alert(mutation(["hello", "hey"]));
alert(mutation(["floor", "loo"]));
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Click me</p>
&#13;
答案 2 :(得分:0)
如果稍微简化逻辑,那么更容易检查:
function mutation(arr) {
return arr[1].split('').reduce(function(res, x) {
return arr[0].indexOf(x) >= 0;
}, true);
}
感谢Leon进行更正。
答案 3 :(得分:0)
我试图不理解你的逻辑,错误是:
正确的代码:
function mutation(arr) {
res = "";
for (var x=0; x<=arr[1].split("").length; x++) {
if (arr[0].split("")[0].indexOf(arr[1].split("")[x]) !== -1) {
return true;
}
}
return false;
}