乐闻世界logo
搜索文章和话题

Lodash 如何从数组中删除未定义的值,但保留 0 和 null ?

2 个月前提问
2 个月前修改
浏览次数34

3个答案

1
2
3

在 Lodash 中,要从数组中移除未定义的值,同时保留 0null,可以使用 _.compact 函数。但是需要注意,_.compact 会移除所有的假值(falsy values),包括 0falsenull""(空字符串)、undefinedNaN

由于您希望保留 0null,我们可以使用 _.filter 函数结合一个适当的回调来实现这一需求。这样可以精确控制我们想要排除的具体值。以下是具体的实现代码:

javascript
import _ from 'lodash'; const array = [0, 1, null, undefined, 2, false, '']; const result = _.filter(array, (value) => value !== undefined); console.log(result); // 输出: [0, 1, null, 2, false, '']

在这个例子中,我们使用 _.filter 来遍历数组,回调函数确保只有当元素不等于 undefined 时才保留在新数组中。这样,0null 均被保留,而 undefined 被成功移除。注意,该方法不会移除其他假值如 false 和空字符串,如果也想移除这些值,可以进一步调整回调函数的逻辑。

2024年7月20日 00:38 回复

要从数组中删除未定义的值,同时保留0和null,我们可以使用 JavaScript 中的 Array.prototype.filter() 方法。这个方法会创建一个新的数组,包含通过所提供函数实现的测试的所有元素。

以下是一个具体的例子,展示了如何实现这个功能:

javascript
function removeUndefinedValues(arr) { return arr.filter(item => item !== undefined); } // 示例数组 const exampleArray = [undefined, 0, null, 'Hello', undefined, 42, null]; // 调用函数 const newArray = removeUndefinedValues(exampleArray); // 输出新数组 console.log(newArray); // 输出: [0, null, 'Hello', 42, null]

在这个例子中,removeUndefinedValues 函数接受一个数组 arr,然后使用 filter() 方法来过滤掉所有未定义的值。我们传递给 filter() 的函数定义为 item => item !== undefined,它会检查每一个元素是否不等于 undefined

这种方法的好处是它不改变原始数组,而是返回一个新的数组,这可以帮助避免在原始数据上造成不可预期的副作用。此外,这种方法也很灵活,可以轻松地修改条件来过滤掉其他类型的值。

2024年7月20日 00:35 回复

在处理数组时,删除未定义(undefined)值,同时保留0和null,可以通过多种方法实现。这里我将介绍两种常用的方法:

方法一:使用 filter() 函数

JavaScript 的 Array.prototype.filter() 方法可以创建一个新数组,包含通过测试的所有元素。在这个方法中,我们可以设定过滤条件为排除 undefined。示例代码如下:

javascript
let arr = [0, null, undefined, 5, undefined, 8]; let filteredArray = arr.filter(item => item !== undefined); console.log(filteredArray); // 输出: [0, null, 5, 8]

在这个例子中,filter() 函数检查数组中的每个元素,只有当元素不等于 undefined 时,该元素才被加入到新数组中。这样,我们就可以保留0和null,同时删除undefined

方法二:使用循环和 splice()

另一种方法是遍历数组,当遇到 undefined 时,使用 splice() 方法从数组中移除它。示例代码如下:

javascript
let arr = [0, null, undefined, 5, undefined, 8]; for (let i = 0; i < arr.length; i++) { if (arr[i] === undefined) { arr.splice(i, 1); i--; // 因为数组长度减少,需要调整索引 } } console.log(arr); // 输出: [0, null, 5, 8]

这里,我们遍历数组,使用 === 操作符检查元素是否为 undefined。如果是,则使用 splice() 方法在原地修改数组,删除当前的元素,并调整索引以正确处理接下来的元素。

总结

这两种方法都可以有效地从数组中删除 undefined 值,同时保留0和null。使用 filter() 方法通常更简洁且易于理解,而使用 splice() 方法则可以在不创建新数组的情况下修改原数组。选择哪种方法取决于具体需求和个人偏好。

2024年7月18日 22:33 回复

你的答案