JavaScript返回没有返回

时间:2017-11-08 21:30:38

标签: javascript

我写了一个简单的函数来检查一个数组是否包含重复项,我希望它返回true,如果它有,如果它没有,则返回false。

function containsDuplicates(a) {
    var hash = {};
    a.forEach((elem, index) => {
        if (hash[elem] === undefined) {
            hash[elem] = 1;
        } else {
            console.log('true')
            return true;
        }

        if (index === a.length - 1) {
            console.log('false')
            return false;
        }
    })
}

var arr = [1, 2, 3, 4];
containsDuplicates(arr)

我的console.log日志很好,但它似乎没有达到回报。我的整个函数每次都返回undefined。为什么会这样?

2 个答案:

答案 0 :(得分:6)

您将从传递给forEach()的回调中返回。

答案 1 :(得分:1)

您正在从传递给foreach的回调中返回。你应该尝试这样的事情。

 function hasDuplicates(array) {
  var keyStore = {};
  for (var i = 0; i < array.length; ++i) {
    var value = array[i];
    if (value in keyStore) {
      return true;
    }
    keyStore[value] = true;
  }
  return false;
}