javascript - 为什么我的数组的最后一个元素返回未定义,而不是拼接它?

标签 javascript

我正在做一个小练习: 问题是我想要这个:

=> ['kept','kept']

但是,我一直收到这个:

enter image description here

function keep(array, keeper) {

//This will return an array of undefined's and 'kept's
// =>[ 'kept', undefined, 'kept', undefined, undefined ]

  matchingNumbers = array.map(function matching(element){
     if (element === keeper) {
      return element;
     }
  });


//Eliminate all undefined's from the matchingNumbers array

  matchingLength = matchingNumbers.length;
  for (var i = 1; i < matchingLength; i++) {
    if(matchingNumbers[i] === undefined) {
      (matchingNumbers.splice(i, 1));
    }
  }
  return matchingNumbers;
}

keep(['kept', 'thirty', 'kept', 2, 1], 'kept')

我试图用for循环拼接matchingNumbers中的所有未定义的,那么为什么还剩下最后一个未定义的?

最佳答案

当函数不执行return语句时,它默认返回undefined。 array.map() 将函数的返回值放入结果数组中,其中包括那些未定义的值。

您应该使用array.filter而不是array.map:

matchingNumbers = array.filter(function matching(element){
     return element === keeper;
});

关于javascript - 为什么我的数组的最后一个元素返回未定义,而不是拼接它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42450017/

相关文章:

javascript - 使用 angularjs 应用程序进行 Bootstrap 的数据表

javascript - 使用 "."而不是 ","正确排序 div 值?

javascript - YouTube 中的 Rel=0 和 autoplay=1 放大弹出窗口中的嵌入播放器不起作用

javascript - 使用 javascript 和 AJAX 将 html 文件插入到我的主 html 文件中的 DIV id

javascript - 改变平面三 Angular 形的颜色 threeJS

javascript - 调用Nuxt JS静态文件

javascript - 从 Ajax JQuery 获取返回字符串的值

javascript - 动态加载新内容后 jquery 触发器不起作用

javascript - 防止 IOS 返回点击时的输入操作

javascript - 在特定字符串后删除