Javascript 使用map作为for循环而不返回可以吗
在我的项目中,我在任何地方都使用map,即使我不想返回任何东西,我只是使用Javascript 使用map作为for循环而不返回可以吗,javascript,reactjs,Javascript,Reactjs,在我的项目中,我在任何地方都使用map,即使我不想返回任何东西,我只是使用{}而不是(),不返回任何东西,只是像循环一样使用它,可以吗?如果是的话,那不使用任何键呢?因为有时我并不真正使用地图中的元素,我甚至不需要(或不知道如何)使用键 下面是我从代码中复制的一个示例: rawElementList.map(element => { if (element.validation !== undefined) { if (Javasc
{}
而不是()
,不返回任何东西,只是像循环一样使用它,可以吗?如果是的话,那不使用任何键呢?因为有时我并不真正使用地图中的元素,我甚至不需要(或不知道如何)使用键
下面是我从代码中复制的一个示例:
rawElementList.map(element => {
if (element.validation !== undefined) {
if (JavascriptUtils.hasOwnProperty(element.validation, 'isRequired')) {
const isRequired = element.validation.isRequired;
if (isRequired !== undefined) {
delete element.validation.isRequired;
required.push(String(element.id))
}
}
validationJsonList.properties[element.id] = element.validation;
}
})
不,那不合适。当您使用专门为创建数组而设计的方法,但实际上并没有创建有意义的数组时,您的代码的任何其他读者都会感到非常困惑。改用forEach
——这是最适合副作用的数组方法:
rawElementList.forEach(element => {
if (element.validation !== undefined) {
if (JavascriptUtils.hasOwnProperty(element.validation, 'isRequired')) {
const isRequired = element.validation.isRequired;
if (isRequired !== undefined) {
delete element.validation.isRequired;
required.push(String(element.id))
}
}
validationJsonList.properties[element.id] = element.validation;
}
})
但是为什么呢?为什么不使用forEach
?将forEach
用于此类cases@CodeManiac我不知道,很舒服!由于我是新手,对java脚本了解不多,所以我只是简单地使用了我所知道的,特别是因为map将迭代每个元素,您应该使用forEach
,这是专门为这种情况设计的!!!只是古玩,我做的有什么副作用?速度慢吗?会不会产生虫子,或者仅仅是混淆了其他编码者?你在代码中有3个副作用:最后3行包含内容<代码>删除元素.validation.isRequired代码>,删除element.validation.isRequired
和validationJsonList.properties[element.id]=element.validation代码>。副作用通常不是一件坏事-它们与纯(r)函数形成对比,纯(r)函数只创建和返回新的东西(如.map
是用于)。它的速度较慢,因为您在映射过程中创建了一个数组,如果您做得正确,使用map vs forEach不会产生bug,但它更易于维护。感谢大家的帮助,我重构了我所有的代码,并在任何我没有返回任何东西的地方使用了forEach
,我怀念那些只有一个“For循环”的日子:d