【问题标题】:Iterating over an array of tuples using Typescript使用 Typescript 遍历元组数组
【发布时间】:2021-06-11 05:11:02
【问题描述】:

我正在 ExecuteProgram.com 网站上完成一个关于学习 Typescript 的测验,但我有点卡住了,我无法通过文档找到帮助。

问题希望函数的以下输入正确运行以返回两个名称:

names([['Amir', 34], ['Betty', 17]]);

问题陈述是这样提出的:

编写一个接受元组数组的函数。每个元组由一个名称(一个字符串)和一个年龄(一个数字)组成。您的函数应该只返回名称。

我的函数如下,但是好像不能返回所有的名字,只能返回第一个。

function names(people: [string, number][]) {
    for (const [name, age] of people) {
       return name;
    }
}

上面的for 循环不应该遍历people 的整个数组并返回每个名称吗?它似乎只返回数组中的第一项。

【问题讨论】:

  • 问题是一旦你调用return,你的函数就会终止。如果您只是将名称打印到控制台而不调用return,您将看到您的函数按预期工作。
  • 哦,我明白了!谢谢你的解释,我没有意识到我把它短路了。

标签: javascript typescript


【解决方案1】:

当您需要从列表中提取元素时,我的建议是使用map functon

在这种情况下,代码将是

const tuples: [string, number][] = [['Amir', 34], ['Betty', 17]];

function get_name(person: [string, number]) {
    return person[0];
}

console.log(tuples.map(tuple => get_name(tuple)));

箭头之前的元素代表元组数组中的单个元素(参见函数签名),整个函数返回一个新数组,该数组是每个元素上应用函数的结果。

我也喜欢这种方法,因为它不会修改你的数组!

Here你可以找到一个有工作代码的游乐场!

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

    function* names(people: [string, number][]) {
        for (const [name, age] of people) {
           yield name;
        }
    }
    

    请看这里:TS Playground

    return 只返回一个值。

    yield 允许您返回多个。

    编辑:function* 告诉 js 引擎您将返回多个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2021-12-12
      • 2020-11-24
      • 1970-01-01
      • 2019-08-29
      • 2019-07-31
      • 2017-01-02
      相关资源
      最近更新 更多