正在使用 Array.map 作为 foreach 的良好做法
Is using an Array.map as a foreach good practice?
我已经在使用 Array.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网站:
"map() 方法创建一个新数组,其结果是调用 在此数组中的每个元素上提供了函数。
从PHP网站(为了好玩):
"array_map() 返回一个包含 array1 的所有元素的数组 在对每个人应用回调函数之后。
没有什么能阻止你在回调函数中做你想做的事情。
如果您个人不习惯这样做,那么在构建自己的新阵列时,您可以做一个"针对每个人"的事情。这可能是我在你的特定情况下会做的。我宁愿这样做,也不必在我的数组上迭代 2 次。
不过,正如Bergi所提到的,如果语义上有意义,那么在数组上迭代两次是一种更好的做法。
如果性能成为一个问题(在长数组上迭代两次)。这是我倾向于做的:
for (var i=0; i<myArray.length; i++) {
doStuffA(myArray[i]);
doStuffB(myArray[i]);
}
这在语义上很清楚。而不是迭代两次。
当然,有些人可能会(可能)不同意我的观点。
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 在POST中将html表作为csv提交
- Foreach无法在Typescript中工作
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- $rootScope未使用forEach进行更新
- 如何将PDF作为二进制文件传递到window.open()
- 如何制作简单的php'在Javascript中的foreach等价物
- 函数未将值作为参数传递
- 使用带括号的图像URL作为jQuery的背景
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 在JavaScript中使用对象作为属性键
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 浮动图像左作为背景-css
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- angular.forEach,可以使用函数(键)作为范围扩大
- 正在使用 Array.map 作为 foreach 的良好做法
- Nodejs-console.log作为forEach中的回调
- Javascript forEach返回“未定义”;作为对象变量
- Array forEach pass "push"作为参数