【发布时间】:2019-07-02 19:41:26
【问题描述】:
如何使用 Array.prototype.map 和不使用 Array.prototype.filter() 在 javascript 中映射没有未定义值的项目
代码:
var testArray = [
{
name: "toto",
totoNumber: "1",
},
{
name: "tata",
totoNumber: "2",
},
{
mame: "error",
},
]
var listOfToto = testArray.map(x => x.totoNumber);
var listOfToto2 = testArray.map(x => x.totoNumber ? x.totoNumber : undefined);
var listOfToto3 = testArray.filter(x => x.totoNumber).map(x => x.totoNumber);
console.log(listOfToto);
console.log(listOfToto2);
console.log(listOfToto3);
价值观:
数组 ["1", "2", 未定义]
数组 ["1", "2", 未定义]
数组 ["1", "2"]
我想在不使用 Array.prototype.filter()
的情况下获取最后一个数组 (["1", "2"])
(也许除了 Array.prototype.map() 之外的其他东西)
其他来源:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Why does javascript map function return undefined?
https://codewithhugo.com/avoiding-falsy-values-in-javascript-arrays/
【问题讨论】:
-
"不使用 Array.prototype.filter()" - 但是...这就是
array.filter()的全部目的。我认为您担心您正在使用两个循环(filter,然后是map)。不要这样。 -
您可以使用
reduce来构建您的新数组,并且只在需要时才包含元素,但是使用map和filter会更容易阅读和维护跨度> -
另外,过滤其他方式更容易并且避免代码重复:
testArray.map(x => x.totoNumber).filter(e => e)(尽管如果您可以将零作为值,您可能需要显式检查!== undefined) -
问题是我不应该有来自后端的未定义值,我不想在任何地方添加 .filter 以确保我不会遇到与今天相同的错误。我希望有一个 .map2
标签: javascript arrays array.prototype.map