我有一个for循环,该循环遍历对象数组,并为数组中的每个对象返回一个格式化对象的方法。
我想知道是否有更好的替代for循环,而不是我在这里使用的'forEach'。 你能建议点什么吗?
代码如下:
for (var index = 0; index < arrItems.length; index++) {
return formatObj(arrItems[index]);
}
每个替代:
var formattedObj;
arrItems.forEach(function (item) {
formattedObj = formatObj(item);
});
return formattedObj;
注意:我已经在else条件中运行了这个循环。
答案 0 :(得分:2)
仅将formatObj
传递到forEach
可能很容易:
arrItems.forEach(formatObj);
没有return
,没有索引处理,什么也没有。
答案 1 :(得分:0)
尝试一下
formattedObj = arrItems.map(fo=>formatObj(fo))
答案 2 :(得分:0)
此代码:
for (var index = 0; index < arrItems.length; index++) {
return formatObj(arrItems[index]);
}
将返回格式化数组中的第一个对象的结果。
此代码:
var formattedObj;
arrItems.forEach(function (item) {
formattedObj = formatObj(item);
});
return formattedObj;
将返回格式化数组中的最后一个对象的结果。
您是否要就地格式化数组?
在这种情况下,您应该知道JS对象是通过引用传递的,因此您可以在被调用函数中对其进行修改,并且它们也将在您的数组中进行更改。因此您的代码可以更改为:
arrItems.forEach(item => formatObj(item));
return arrItems;
或者,因为forEach
方法接受带有第一个参数作为项目的函数,所以您可以直接传递该函数:
arrItems.forEach(formatObj);
return arrItems;
“更好”是一个非常主观的术语。在什么意义上更好?
您使用的方法是用于迭代一系列项目的标准JS,并且根据运行代码的JS引擎,必须以优化的方式实现。