【问题标题】:How can I port this "one-line for loop" from Python to JavaScript?如何将这个“单行 for 循环”从 Python 移植到 JavaScript?
【发布时间】:2020-09-15 07:30:22
【问题描述】:

我不确定使用的术语(我认为它被称为“lambda”或类似的东西),所以我无法进行适当的搜索。

Python 中的以下行:

 a, b, c, d, e = [SomeFunc(x) for x in arr]

我怎样才能在 Javascript 中做同样的事情?

我有这个开始:

let [a, b, c, d, e] = arr;

但我仍然需要在 arr 中的每个元素上调用 SomeFunc

【问题讨论】:

标签: javascript python


【解决方案1】:

一个近似的方法是使用数组方法map。它使用一个函数对每个数组元素进行操作,并返回一个相同长度的新数组。

const add2 = (el) => el + 2;

const arr = [1, 2, 3, 4, 5];
let [a, b, c, d, e] = arr.map(add2);

console.log(a, b, c, d, e);

使用数组解构时要小心,以确保为返回的数组解构正确数量的元素。

【讨论】:

  • 我会小心解构,因为您可能会在不知不觉中遗漏数组的元素。
  • 谢谢。我在答案中添加了一个注释。
【解决方案2】:

它在 JavaScript 中称为 .map(),你可以这样使用它:

let arr = [1,2,3,4].map(someFunc);

并且 someFunc 会在其他地方定义,也许:

function someFunc(x){ return ++x };
//or es6
let someFunc = x => ++x;

【讨论】:

    【解决方案3】:

    在这种情况下你可以使用地图

    function functionF(x){return x}
    
    let [a, b, c, d, e] = arr.map(functionF);
    

    【讨论】:

      【解决方案4】:

      您要查找的术语是lambda functions

      这些类型的函数非常适合快速的一次性计算。等效的javascript 是map() 函数。对于您的具体情况,语法为

      让 arr = some_array.map(x => { 返回 SomeFunc(x); });

      例如语句

      让 arr = [1, 2, 8].map(num => { 返回数 * 2; });

      会将列表[2, 4, 16] 分配给变量arr

      希望有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-27
        • 1970-01-01
        • 2022-11-19
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 2017-06-18
        相关资源
        最近更新 更多