Javascript变量作为表达式给出了意外的标识符错误

时间:2016-02-25 14:22:41

标签: javascript lodash

我有java脚本代码,用于根据某个值过滤数组。

在此我将一行代码null分配给名为_(obj.boardingPoints).map('location').intersection(json[0]).value().length > 0的变量

st

并在代码中替换变量var st='_(obj.boardingPoints).map('location').intersection("'+json[0]+'").value().length > 0' 以过滤数组

st

但它会在此行中引发意外的标识符错误

var tresult = _.filter(result, function(obj) { return st||_(obj.droppingPoints).map('location').intersection(dpLocations).value().length > 0 || _.includes(busTypes, obj.busType) || _.includes(operatorNames, obj.operatorName); });

2 个答案:

答案 0 :(得分:2)

好的,请参阅评论中的回复。我认为我有足够的信息来写答案,假设json [i]是一个字符串数组:

var tresult = _.filter(result, function(obj) {
    return _(obj.boardingPoints).map('location').intersection(json[i]).value().length > 0
        || _(obj.droppingPoints).map('location').intersection(dpLocations).value().length > 0
        || _.includes(busTypes, obj.busType)
        || _.includes(operatorNames, obj.operatorName);
});

您可以将表达式分配给变量,但我认为在这种情况下没有任何实际好处。但是,如果您确实坚持将表达式赋值给变量,请将其保留为表达式,将其转换为字符串将无效。以下是将第一个表达式赋给变量的代码:

var tresult = _.filter(result, function(obj) {
    var st = _(obj.boardingPoints).map('location').intersection(json[i]).value().length > 0;

    return
        st || _(obj.droppingPoints).map('location').intersection(dpLocations).value().length > 0
        || _.includes(busTypes, obj.busType)
        || _.includes(operatorNames, obj.operatorName);
});  

答案 1 :(得分:0)

查看语法突出显示您尝试在单引号内使用单引号。试试这个:

var st='_(obj.boardingPoints).map("location").intersection("'+json[0]+'").value().length > 0'