【问题标题】:js: Multiple return in Ternary Operatorjs:三元运算符中的多次返回
【发布时间】:2016-07-09 00:22:17
【问题描述】:

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

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"
    };
}

谁能帮我解决这个问题?

提前致谢

【问题讨论】:

  • 您缺少 return 关键字
  • return 关键字在哪里?
  • 是的,我错过了return

标签: javascript return ternary-operator


【解决方案1】:

由于差异只有一个属性(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?
    };
});

【讨论】:

  • 因为行数很重要,所以我选择这个。
  • @Agnes Gru Steven,感谢您尝试编辑。你部分是固定的,有一个错误的括号和一个丢失。
  • 谢谢,这也可能对其他人有所帮助。 :)
【解决方案2】:

您的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"
    };
}

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多