Javascript 在检查一个值然后写入另一个值的情况下,对u.forEach进行过滤有什么好处吗?
我对JavaScript相当陌生,所以我非常依赖eslint和插件来指导我。我是为一个有lodash 3.9.3的环境而写的,它必须使用Chrome 40,也就是es5 我有一些代码如下:Javascript 在检查一个值然后写入另一个值的情况下,对u.forEach进行过滤有什么好处吗?,javascript,lodash,ecmascript-5,Javascript,Lodash,Ecmascript 5,我对JavaScript相当陌生,所以我非常依赖eslint和插件来指导我。我是为一个有lodash 3.9.3的环境而写的,它必须使用Chrome 40,也就是es5 我有一些代码如下: \u.forEach(star.system()。行星,函数(world){ if(world.starting_planet===真) if(世界.行星){ world.planet.shuffleLandingZones=true; }else-world.generator.shuffleLanding
\u.forEach(star.system()。行星,函数(world){
if(world.starting_planet===真)
if(世界.行星){
world.planet.shuffleLandingZones=true;
}else-world.generator.shuffleLandingZones=true;
});
eslint plugin lodash
抛出消息“preference.filter or.some over a u.forEach中的if语句”,链接到其文章
在我看来,\ forEach
似乎是这里的正确选择,因为我想在现有数组中设置一个新值。但我试了一下,想出了
var startingplaners=u.filter(star.system().planers{
启动地球:是的,
});
_.forEach(启动行星、功能(行星){
如果(行星,行星){
planets.planet.ShuffelandingZones=真;
}else planets.generator.shuffleLandingZones=true;
});
但是我看了一下,我想,这不是因为我现在迭代两个数组而不是一个数组,所以效率就降低了吗?我错过什么了吗?我是不是应该忽略这件事?我是否使用了
。过滤器来实现我的目标是错误的?您可以选择忽略这里的林特警告-过滤器只应在目标是创建另一个数组时使用,您的代码基本上是正确的
这不是因为我现在迭代两个数组而不是一个数组,所以效率更低吗
不一定,因为lodash可以避免创建临时数组。我建议将此写为
_(star.system().planets).filter({
starting_planet: true,
}).forEach(function (world) {
var planet = world.planet || world.generator;
planet.shuffleLandingZones = true;
});
您可以选择忽略此处的linter警告-filter
仅当目标是创建另一个数组时才应使用,您的代码基本上没有问题
这不是因为我现在迭代两个数组而不是一个数组,所以效率更低吗
不一定,因为lodash可以避免创建临时数组。我建议将此写为
_(star.system().planets).filter({
starting_planet: true,
}).forEach(function (world) {
var planet = world.planet || world.generator;
planet.shuffleLandingZones = true;
});
也许可以试试uu.map?当然,我对第一个代码段中的格式设置和{}
用法存在问题,但该版本只循环一次。我可能更喜欢它。然而,这是我的观点。或者只使用本机数组函数,forEach、map、filter和exc:)为什么还要使用lodashD(抱歉打扰了,我只是不太喜欢uz)是的,我会选择本机数组方法,特别是因为它们允许像startingplants.filter().foreach()这样的链接。我认为eslint给出这个消息是为了鼓励更好的代码可读性,虽然性能有所下降,但可能negligible@Halil切卡尔主要是出于习惯,因为我的Chromium版本限制在native中不支持很多东西,所以不得不依靠它。早些时候,我正在使用Chromium 2x。也因为我学习了一些使用lodash的现有代码,所以这是我第一次遇到的。在以后的工作中,我将切换,但为了内部一致性,我坚持使用lodash。也许可以尝试使用u.map?当然,我对第一个代码段中的格式和{}
用法存在问题,但该版本只循环一次。我可能更喜欢它。然而,这是我的观点。或者只使用本机数组函数,forEach、map、filter和exc:)为什么还要使用lodashD(抱歉打扰了,我只是不太喜欢uz)是的,我会选择本机数组方法,特别是因为它们允许像startingplants.filter().foreach()这样的链接。我认为eslint给出这个消息是为了鼓励更好的代码可读性,虽然性能有所下降,但可能negligible@Halil切卡尔主要是出于习惯,因为我的Chromium版本限制在native中不支持很多东西,所以不得不依靠它。早些时候,我正在使用Chromium 2x。也因为我学习了一些使用lodash的现有代码,所以这是我第一次遇到的。对于未来的工作,我将切换,但为了内部一致性,我坚持使用lodash。