我基本上是想编写一个函数,该函数在调用时执行endsWith()方法的动作
我尝试遍历原始字符串和要使用for循环进行测试的字符串
function confirmEnding(str, target) {
let strWord = '';
let targetWord = '';
for (let i = (target.length - 1); i >= 0; i--) {
targetWord.concat(target.charAt(i))
for (let j = (str.length - 1); j >= 0; j--) {
strWord.concat(str.charAt(j));
}
}
if (strWord == targetWord) {
return true
} else {
return false
}
}
现在无论何时我调用该函数,它都会返回true,我的代码有什么问题?
答案 0 :(得分:0)
最主要的是,您使用的是嵌套循环。没必要这样做。
一种简单的方法(除了使用endsWith
之外)是获取str
的末尾(使用target
的长度),然后将该子字符串与{{1 }}:
target
输入您的实际代码:
function confirmEnding(str, target) {
return str.length >= target.length && str.slice(-target.length) === target;
}
不会修改您调用的字符串,它会返回一个 new 字符串(必须;字符串为 JavaScript中不可变 [不可更改]
如果您修复#1,则外循环只会将concat
复制到target
,但顺序相反。您的 inner 循环重复以相反的顺序将targetWord
复制到str
,因此最终您会在其中复制strWord
个副本target.length
。
该函数中的所有内容都尝试仅获取strWord
的 part (最后一部分,长度与str
相同)。您最终将比较完整字符串(如果您修复了#1和#2),而不是比较target
末尾的子字符串。
最后,请注意:只要您发现自己在写作:
str
您可以更简洁,惯用地书写
if (a == b) {
return true;
} else {
return false;
}
这完全相同。 :-)
答案 1 :(得分:0)
concat
返回新字符串。
改为使用<span unselectable="on" class="k-dropdown-wrap k-state-default"><span unselectable="on" class="k-input">Chang</span><span unselectable="on" class="k-select" aria-label="select"><span class="k-icon k-i-arrow-60-down"></span></span></span>
Code:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome('./chromedriver')
driver.get("https://demos.telerik.com/kendo-ui/dropdownlist/remotedatasource")
select = driver.find_element_by_xpath('//*[@id="example"]/div/span/span/span[1]')[0]
select.SelectByValue("Chang");
print('Success')
。