是否有可能获得已经用地图“推”的值?

时间:2015-05-26 06:30:10

标签: javascript dictionary ecmascript-6

如果我有:

var arr = [1, 2, 3];

我这样做:

arr.map(function (val) {
    return val + 5;
});

是否可以获取“地图”当前/已有的值?

我的意思是,例如,在最后一次迭代中,你可以这样做吗?:

arr.map(function (val) {

    // I realize now that values is actually a function in the
    // global scope that returns an empty array, but I meant
    // to use it as an example of a possible function that would
    // return the actual previous values.

    console.log(values()); // Logs [6, 7]
    return val + 5;
});

或许这可能是对map的滥用?有没有其他方法可以实现这一点,而无需推送到外部阵列?

2 个答案:

答案 0 :(得分:0)

你可以这样做,但在我看来有一些误用。 map应该只处理数据并返回此处理过的数据。为了将来的代码维护,您不应该对这种代码写任何副作用。 如果您想为数组的每个元素执行某些操作,可以使用forEach

当您想编写易于维护的代码时,在编码风格中保留某种约束是非常有帮助的。例如,仅将map函数用于预期用途。

答案 1 :(得分:0)

嗯,从未见过这样的地图。我通常使用地图变量作为地图。对于那些你需要一个迭代器来获取它的值。

你如何去写iterator是另一个故事。也许可以使用常规(变量类型):: iterator it。