函数迭代查询

时间:2018-12-25 20:35:18

标签: javascript arrays function

我被赋予创建一个遍历数组的函数的任务。以下是我所拥有的,但是我得到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));

3 个答案:

答案 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

conditional (ternary) operator

Array find