我被赋予创建一个遍历数组的函数的任务。以下是我所拥有的,但是我得到undefined
。我想念什么?
function lookingForDave(arr) {
for (var i = 0; i < arr; i++) {
if (array.forEach === 'Dave') {
return 'I found him';
} else {
return 'Not Dave';
}
}
}
var testArray = ['Dave'];
console.log(lookingForDave(testArray));
答案 0 :(得分:4)
您需要根据值检查数组的元素,然后返回(如果找到),否则在函数末尾返回'Not Dave'
。
如果您在第一次检查该值时返回,但未找到返回值,则将省略所有其他要检查的元素。
function lookingForDave(array) {
for (var i = 0; i < array.length; i++) {
if (array[i] === 'Dave') {
return 'I found him';
}
}
return 'Not Dave';
}
var testArray = ['Dave'];
console.log(lookingForDave(testArray));
另一种解决方案是使用Array#includes
并返回所需的字符串。
function lookingForDave(array) {
return array.includes('Dave')
? 'I found him'
: 'Not Dave';
}
var testArray = ['Dave'];
console.log(lookingForDave(testArray));
答案 1 :(得分:0)
这是另一个解决方案:
function lookingForDave(array) {
return array.some(el => el === "Dave") ?
"It's Dave" :
"Not Dave!";
}
var testArray = ["Dave", "Bob", "Sam"];
console.log(lookingForDave(testArray));
这很有效:
some()
采用为数组中的每个元素运行的函数。您作为参数传递的函数必须返回 truthy 或 falsy 值。
如果这些返回语句中的任何是真实的,则some()
返回true。
使用三元运算符检查是否为真,然后返回“ It's Dave”,否则返回“ Not Dave!”。
希望有帮助!
答案 2 :(得分:0)
您可以使用find而不是for循环。看起来您好像想在第一次找到匹配项后返回。 Array.find将返回第一个匹配条件的值。
在以下情况下,如果数组中的元素等于Dave。如果没有匹配项,那么我们将遍历数组中的每个项目并返回undefined。
然后,我们可以使用条件(三元)运算符来测试是否找到了项。
def convert(d):
dt = datetime.date(1900, 1, 1) + datetime.timedelta(d)
return dt.strftime('%Y-%m-%d')
df['date'] = df['date'].apply(convert)
print(df)
# date
# 0 2018-10-03