js:三元运算符中的多个返回

时间:2016-03-22 07:56:19

标签: javascript return ternary-operator

对于我的任务,我已经完成了一段代码,例如获取用户详细信息,

var data = userInfo.map(function (element) {
    if (element[9].search("Active") != -1) {
        return {
            'LastName': Capitalizefirstletter(element[1]),
            'FirstName': Capitalizefirstletter(element[2]),
            'UserName': element[3],
            'IsActiveUser': "True"
        };
    }
    else {
        return {
            'LastName': Capitalizefirstletter(element[1]),
            'FirstName': Capitalizefirstletter(element[2]),
            'UserName': element[3],
            'IsActiveUser': "False"
        };
    }
}

工作正常,我可以看到变量数据中所有用户的所有细节。

在重新分解时,我被要求使用三元运算符实现这一点(不知道为什么我必须像这样改变,尽管一个工作正常)。所以我尝试了这样的代码,但是我只能在变量数据中看到NULL值。

var data = userInfo.map(function (element) {
    (element[9].search("Active")) != -1  ? {
        'LastName': Capitalizefirstletter(element[1]),
        'FirstName': Capitalizefirstletter(element[2]),
        'UserName': element[3],
        'IsActiveUser': "True"
    } : {
        'LastName': Capitalizefirstletter(element[1]),
        'FirstName': Capitalizefirstletter(element[2]),
        'UserName': element[3],
        'IsActiveUser': "False"
    };
}

有人可以帮我吗?

先谢谢

2 个答案:

答案 0 :(得分:4)

由于差异只是一个属性(IsActiveUser),因此您可以在对象内插入比较。

var data = userInfo.map(function (element) {
    return {
        'LastName': Capitalizefirstletter(element[1]),
        'FirstName': Capitalizefirstletter(element[2]),
        'UserName': element[3],
        'IsActiveUser': ~element[9].search("Active") ? "True": "False" // really a string?
    };
});

答案 1 :(得分:3)

您的map函数需要在每次迭代时返回一些内容。只需添加return关键字:

即可
var data = userInfo.map(function (element) {
    return (element[9].search("Active")) != -1  ? {
        'LastName': Capitalizefirstletter(element[1]),
        'FirstName': Capitalizefirstletter(element[2]),
        'UserName': element[3],
        'IsActiveUser': "True"
    } : {
        'LastName': Capitalizefirstletter(element[1]),
        'FirstName': Capitalizefirstletter(element[2]),
        'UserName': element[3],
        'IsActiveUser': "False"
    };
}