IE 11中的JS筛选器功能面临的问题

时间:2019-01-03 12:39:59

标签: javascript jquery

我有以下lambda表达式

 if (MyObject.eId.filter(e => e === record.Id).length > 0) 
{
 return;
}

这适用于除IE之外的所有浏览器(在IE 11中选中)

我试图将其转换为以下方式,但出现语法错误。请帮助我重写上述功能。

MyObject.eId.filter(function (e) {
                    if (e === record.Id).length > 0
                    {
                        return;

                    }


                }); 

1 个答案:

答案 0 :(得分:1)

您的非箭头函数不正确:基本上在.filter方法的回调/谓词中,您仅应检查e是否与记录ID匹配,而不检查长度。应当对返回/过滤的数组执行长度检查:

if (MyObject.eId.filter(function(e) { return e === record.Id; }).length > 0) {
    return;
}

要分解上面复杂的单线代码,您可以这样查看:

// Step 1: Get an filtered array of IDs that match record ID
var filteredIds = MyObject.eId.filter(function(e) {
    return e === recordId;
});

// Step 2: Check length of filtered array
if (filteredIds.length) {
    return;
}