【问题标题】:forEach to return value without a conditon [closed]forEach 在没有条件的情况下返回值 [关闭]
【发布时间】:2018-02-20 08:37:47
【问题描述】:

我有这个数组,我正在循环遍历它,我只想让它返回数组的元素而没有任何条件,我在一些 forEach 循环的例子中看到,只有在满足某个条件时才返回一些东西。 这是我的代码:

let tickets = ['Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A18',
'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A3',
'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1']

let ticket = tickets.forEach(ticket => {
    return ticket
});
 console.log(ticket); // undefined why?

【问题讨论】:

  • forEach 不返回值,请改用map
  • 对于原始值,您可以对数组进行切片。
  • 仅仅阅读forEach 上的文档就不需要这个问题了。

标签: javascript arrays foreach


【解决方案1】:

我不完全确定您要完成什么。但如果需要将所有tickets 元素合并到一个string 中,代码如下:

let resultString = "";
tickets.map(singleTicket => {
    resultString += singleTicket + " ";
});

【讨论】:

  • 我希望该数组中的每一张票都使用return返回
  • 你想要他们在哪里?在控制台打印?在这两种情况下,我提供的 ticket 都将包含 tickets 数组的每个元素。
  • 我不想在控制台打印它们
  • 我已经更新了我的答案,所以每张票都将存储在 singleTicket 变量中。
  • @mots 这就是您需要的。所有元素都组合在一个字符串中。
【解决方案2】:

来自developer.mozilla.org

forEach() 对每个数组元素执行一次回调函数; 不像 map() 或 reduce() 它总是返回值 undefined 并且是 不可链接。典型的用例是在 链的末端。

【讨论】:

    【解决方案3】:

    forEach 不返回任何内容,您需要使用 map 来代替,并且可以简单地这样做

    let tickets = ['Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
    'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
    'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A18',
    'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A3',
    'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
    'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1',
    'Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1']
    
    let ticket = tickets.map(ticket => {
        return ticket
    });
    console.log(ticket);

    returnforEach 中的作用类似于continue 语句,延迟执行后面的语句并执行下一次迭代。

    但是,如果您只是想按原样返回数组的所有元素,则最好不要使用任何东西,而只使用原始数组

    【讨论】:

    • @mots,你到底在找什么
    • 我想返回这样的结果:Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A1Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A18Follow link to download your ticket https://ticketsoko.nouveta.co.ke/ticket.html?ticket_number=201711297A3
    • 循环遍历该数组并返回该数组中的每个单独元素。我不想创建另一个数组。这正是 map() 所做的
    • 我写的回复很糟糕。我可以使用toString() 做到这一点。我想要每个元素
    • 数组给你每一个元素,你想怎么使用它们
    猜你喜欢
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多