您好我有以下内容:
var a = [1, 2, 3]
我想将此数组更新为:
a = [11,22,33]
我正在尝试做类似
的事情a.map(repeat(2));
但会导致错误。
我知道我可以轻松地遍历这个,但我正在尝试使用更简洁的代码,并在不同的函数上扩展我的知识,以及如何使用它们。
这样的事情可能吗?
答案 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));