当前位置: 首页 > 知识库问答 >
问题:

防止阿雷。返回条件不满足时返回[未定义的重复回调]

督翰学
2023-03-14

我正在写一些代码,有些事情让我困惑。我有一个名为alarmsList的数字数组。现在我想遍历这个列表,如果一个值高于60,例如,我想创建一个新的对象数组(集合),在那里我们存储高值,它的索引来自原始数组。所以以下面的代码为例

const alarmsList = [1, 61, 77, 4, 5, 6, 7, 8, 85, 4, 3, 55];

const highAlarmsList = alarmsList.map((item, index) => {
    if(item > 60) {
        return ({ value: item, index })
    }
});

console.log(highAlarmsList)

控制台。日志输出如下

[
    undefined,
    {
        "value": 61,
        "index": 1
    },
    {
        "value": 77,
        "index": 2
    },
    undefined,
    undefined,
    undefined,
    undefined,
    undefined,
    {
        "value": 85,
        "index": 8
    },
    undefined,
    undefined,
    undefined
]

这个输出是我所需要的,但是如何防止返回未定义的值呢?我考虑过使用数组。但这似乎不合适?我应该使用不同的数组方法吗?我不想使用for循环并推送到一个新数组,除非这是在不返回未定义值的情况下实现新数组的最佳/唯一方法。

共有2个答案

龙承颜
2023-03-14

map通过对数组的每个元素运行回调来创建一个新数组。如果条件不满足,它将返回undefined或null。因此,不可能从输出中跳过元素。

或者你可以ue减少或过滤

const alarmsList = [1, 61, 77, 4, 5, 6, 7, 8, 85, 4, 3, 55];

const highAlarmsList = alarmsList.reduce((acc, item, index) => {
  item > 60 && acc.push({
    value: item,
    index
  })
  return acc;
}, [])

console.log(highAlarmsList)
籍弘伟
2023-03-14

你可以使用数组。filter()使用布尔值作为谓词删除定义值:

const alarmsList = [1, 61, 77, 4, 5, 6, 7, 8, 85, 4, 3, 55];

const highAlarmsList = alarmsList.map((item, index) => {
  if(item > 60) {
    return ({ value: item, index })
  }
}).filter(Boolean);

console.log(highAlarmsList)

 类似资料:
  • 我打印了错误, 这两个文件在同一个目录中

  • 问题内容: 因此,当我打开灯箱时,我试图禁止在页面上滚动,而我发现这个确实有用的脚本非常有用。不幸的是,当我在自己的页面上使用它时,它也禁止在灯箱中滚动。我开始用警报调试代码,只是发现该事件。wheelDelta在我的页面上返回“undefined”,而在JSFiddle中,它返回-120。 问题答案: jQuery事件处理程序中的对象不能反映真实事件。是IE和Opera的非标准事件属性,可通过j

  • 我正在尝试为discord bot执行命令,它从MySQL表中输出整数。 我尝试使用async/await、Promissions和回调来实现这一点,但结果总是一样的。在这里,我用promise再次尝试,因为在过去它不知何故起了作用。现在不会了。 下面是返回promise的函数: 下面的代码将结果赋值给Access Level变量: Catch函数捕获表示“TypeError:无法读取未定义的属性

  • 然而,当我只使用console.log(body)时,它会给出正确的结果 …………………………。 ………………………… ……

  • 我有一个很管用的方法。这是看起来的样子。 我想把这个换成兰姆达。里面带着shell来了uo,但是我不知道怎么填充if(条件)返回true还是返回false外面。

  • 问题内容: 我有一个由以下映射的关联: 我想使用Criteria API返回所有包含一个或多个带有attribute实体的实体的列表。我不希望映射集合被查询过滤。 例如,给出以下内容: 该查询应返回以下内容: 到目前为止,我正在使用以下条件查询: 然而,它返回的等价于 即,它为每个子元素返回一个父记录(填充了子集合) 有谁知道在这种情况下如何仅返回唯一的父元素? 意见表示赞赏,p。 问题答案: 您