我试图实现lodash来重构这个for循环,那么最好的方法是 _。过滤 或 _。 forEach ?
for(var i = 0; i < origPam.length; i ++){
if(origPam[i].editor.mapped !==newPam[i].editor.mapped){
$scope.$apply();
}
}
答案 0 :(得分:1)
似乎您有2个输入数组。我将首先使用_.zip
将它们配对。
const pams = _.zip(origPam, newPam)
然后按条件过滤。
const pamsToProcess =
_.filter(pems, ([origPem, newPem]) => origPem.editor.mapped !== newPem.editor.mapped)
最后_.forEach
做事情。
_.forEach(pamsToProcess, ([origPem, newPem]) => {/* do stuff */})
在上方组合
_(_.zip(origPam, newPam))
.filter(([origPem, newPem]) => origPem.editor.mapped !== newPem.editor.mapped)
.forEach(([origPem, newPem]) => {/* do stuff */})
由于不能在break
中使用_.forEach
,因此可以使用_.takeWhile
首先过滤掉内容。
答案 1 :(得分:0)
origPam.forEach(function(val, i) {
if (val.editor.mapped !== newPam[i].editor.mapped)
// do stuff
});
说实话,你应该优化一下(没有必要多次调用$ apply)