在Javascript中使用带有repeat的array.map

时间:2017-08-12 18:51:37

标签: javascript repeat

您好我有以下内容:

var a = [1, 2, 3]

我想将此数组更新为:

a = [11,22,33]

我正在尝试做类似

的事情
a.map(repeat(2)); 

但会导致错误。

我知道我可以轻松地遍历这个,但我正在尝试使用更简洁的代码,并在不同的函数上扩展我的知识,以及如何使用它们。

这样的事情可能吗?

6 个答案:

答案 0 :(得分:1)

鉴于您似乎正在寻找重复数字,请使用字符串。其中有一个方便repeat method用于此目的:

a.map(x => Number(String(x).repeat(2))));

如果你想使用你的符号,你需要创建一个高阶repeat函数,它返回另一个函数用作map回调函数:

function repeat(times) {
    return x => String(x).repeat(times);
}
a.map(repeat(2)).map(Number)

答案 1 :(得分:1)

是的,这是可能的。您可以将repeat定义为返回函数的函数:



function repeat(times) {
    return function (value) {
        return +String(value).repeat(times);
    }
}

// Your code:
var a = [1, 2, 3];
var result = a.map(repeat(2));
console.log(result);




map方法需要一个函数作为参数,因此对repeat(2)的调用应返回一个函数。在将值转换为字符串后,该(内部)函数使用String#repeat,然后使用unary +将结果转换回数字。

答案 2 :(得分:1)

您可以将数字转换为字符串,重复该值并将其转换回数字。



var a = [1, 2, 3]
a = a.map(a => +a.toString().repeat(2));

console.log(a);




答案 3 :(得分:0)

在这里,number版本和string版本

const doubleIt = n => Number(`${n}${n}`);

const arr = [1, 2, 3, 55];
const strArr = arr.map(o => `${o}${o}`);
const numArr = arr.map(o => o * 11);
const numFromStringsArr = arr.map(o => doubleIt(o));

console.log(strArr);
console.log(numArr);
console.log(numFromStringsArr);

答案 4 :(得分:0)

您可以使用.length创建一个N Array()数组,使用Array.prototype.fill()使用当前元素.map()回调填充已创建的数组,链Array.prototype.join()""为参数,使用+运算符将字符串转换为数字



var a = [1, 2, 3], n = 2;
a = a.map(el => +Array(n).fill(el).join(""));
console.log(a);




答案 5 :(得分:-1)

只需使用Array join() method

进行尝试
a.map(x => Array(2).join(x));