下面的javascript代码为我提供了不要在循环内进行功能的功能。错误

/* Get the favorite products from the data using the id */
productDataCategory[FAVORITES].length = 0/* empty favorites productDataCategory */;
for ( i = 0; i < currentUser.favorites.length; i++) {
    product = $.grep(productData, function(e){ return e.id === currentUser.favorites[i]; })[0];
    productDataCategory[FAVORITES].push(p);
}


我查了一下问题,看到其他成员也提出了类似的问题
How to get around the jslint error 'Don't make functions within a loop.'
Don't make functions within a loop

我的问题是我在循环内使用$ .grep函数在数组中查找产品。
我不知道如何使用以上问题的答案来解决此问题。



来自登录用户的数据

{
    "user": "MBO",
    "email": "[email protected]",
    "username": "Marcel",
    "photoURL": "url_here",
    "favorites": [13,25,40,56]
}

最佳答案

将函数放在循环之外:

/* Get the favorite products from the data using the id */
productDataCategory[FAVORITES].length = 0/* empty favorites productDataCategory */;
var f = function(e){ return e.id === currentUser.favorites[i]; };
for ( i = 0; i < currentUser.favorites.length; i++) {
  product = $.grep(productData, f)[0];
  productDataCategory[FAVORITES].push(p);
}

关于javascript - 如何使用jquery $ .grep解决jshint错误“不要在循环内创建函数”。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12892406/

10-13 06:07