gpt4 book ai didi

javascript - 使用 Array.map 作为 foreach 是一个好的做法吗?

转载 作者:行者123 更新时间:2023-11-27 23:18:33 28 4
gpt4 key购买 nike

我已经在使用 Array.map,但是对于相同的数据,我需要进行一些其他计算。我应该在 map 内进行这些计算还是在 map 后的每个中进行计算?

    return res.data.map(function (obj) {
if(obj.status.id == 6 || obj.status.id == 5){
dateDifference(obj.created_at,obj.closed_at);
}else{
$scope.open++;
}
return {
"id":obj.id,
"subject": obj.subject,
"requester": obj.requester.name,
"assigned": obj.assigned ? obj.assigned.name : '',
"priority": obj.priority.name,
"status": obj.status.name,
"category": obj.category.name,
"created_at": moment(obj.created_at).utcOffset("06:00").format('lll'),
"updated_at": moment(obj.updated_at).utcOffset("06:00").format('lll')
}
})

最佳答案

我不认为这是一个“好的做法”,但我也不认为它是一个坏的做法。事实上,.map() 旨在迭代并创建新的结果数组。

也许答案就在于它的定义。

来自JS website :

"The map() method creates a new array with the results of calling a provided function on every element in this array."

来自PHP website (为了好玩):

"array_map() returns an array containing all the elements of array1 after applying the callback function to each one."

没有什么可以阻止您在回调函数中执行您想要的操作。

如果您个人不愿意这样做,您可以在构建自己的新数组时通过“foreach”实现相同的效果。这可能就是我在你的具体情况下会做的事情。我宁愿这样做,也不愿在数组上迭代 2 次。

不过,正如 Bergi 提到的,如果语义上有意义的话,最好对数组进行两次迭代。

如果性能成为一个问题(在长数组上迭代两次)。这是我倾向于做的事情:

for (var i=0; i<myArray.length; i++) {
doStuffA(myArray[i]);
doStuffB(myArray[i]);
}

语义上非常清楚。而不是迭代两次。

当然,有些人可能(很可能)不同意我的观点。

关于javascript - 使用 Array.map 作为 foreach 是一个好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607160/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com