【问题标题】:Executing map function inside string concatenation在字符串连接中执行映射函数
【发布时间】:2017-11-13 23:57:51
【问题描述】:

是否可以在连接字符串时使用map() 函数?如果不是,还有什么方法?

我尝试了以下方法:

var data = [{ server: "one" }, { server: "two" }];
var output = "start " + data.map(function(i) { i.server}) + " end";

我想使用Array Comprehension,但我没有运行 ES7,所以我尝试使用 => 进行映射,但我正在运行的任何 EcmaScript 也不支持它......所以我将其修改为上述,但它仍然不适用于 JSHint 声明它希望 map() 独立执行。

任何方法都适合我,只要我可以使用字符串连接内联运行它。

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    尝试使用join()将map()生成的新数组连接成一个字符串。

    var data = [{ server: "one" }, { server: "two" }];
    var output = "start " + data.map(function(i) { return i.server; }).join(' ') + " end";
    console.log(output);

    【讨论】:

    • ES6 和let output = `start ${data.map(i=>i.server).join` `} end`;一样简单
    • 这样肯定更漂亮。 OP 提到由于某种原因他不能使用箭头功能。
    • ${...} 是template literal 中的占位符。
    • 谢谢@PatrickRoberts。我看到的关于数组理解的大多数参考资料都可以追溯到那个 Mozilla 页面,因为它可以与他们的引擎一起使用。您的解决方案是否适用于其他浏览器?因为我不知道我正在运行什么 JS 版本,或者我怎么知道,但是在 Chrome 上没有一个理解或箭头函数对我有用。
    【解决方案2】:

    您应该在 map 函数中使用 return 语句并将结果也加入其中,如下所示:

    var data = [{ server: "one" }, { server: "two" }];
    var output = "start " + data.map(function(i) { return i.server; }).join(" ") + " end";
    

    【讨论】:

    • 谢谢,我刚刚发现它也需要退货
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2012-07-24
    • 2010-11-14
    • 2012-01-23
    相关资源
    最近更新 更多