如何将这个“一行换环”从Python移植到Javascript?

时间:2018-01-30 16:05:40

标签: javascript python

如果这是一个重复的问题,我很抱歉;我不确定使用的术语(我认为它叫做“lambda”或类似的东西),所以我无法进行适当的搜索。

Python中的以下行:

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

如何在Javascript中执行相同操作?

我从头开始:

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

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

谢谢!!!

4 个答案:

答案 0 :(得分:4)

近似将是使用数组方法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);




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

答案 1 :(得分:3)

它在JavaScript中调用了.map(),您可以像这样使用它:

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

和someFunc将被定义在其他地方,可能是:

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

答案 2 :(得分:3)

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

function functionF(x){return x}

let [a, b, c, d, e] = arr.map(functionF);

答案 3 :(得分:0)

您正在寻找的术语是lambda functions

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


    let arr = some_array.map(x => {
        return SomeFunc(x);
    });

例如,声明


    let arr = [1, 2, 8].map(num => {
        return num * 2;
    });

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

希望有所帮助!