Javascript 映射数组以设置空元素

Javascript 映射数组以设置空元素,javascript,arrays,Javascript,Arrays,鉴于: 我想得到: let input = [0, 1, 2,,,,,7] (即值等于键乘以键) 我如何映射包含空值的输入(或等效输入?如果我这样做input.map()我将得到[,1,22,,,,,,,77777],因为map当然不会迭代空值。数据可以是任意的、字符串、对象、数字等。为了简单起见,在本例中使用数字。在应用映射函数之前,可以填充数组,以便迭代所有索引,包括空索引 let output = [, 1, 22, 333, 4444, 55555, 666666, 7777777]

鉴于:

我想得到:

let input = [0, 1, 2,,,,,7]
(即值等于键乘以键)


我如何映射包含空值的
输入(或等效输入?
如果我这样做
input.map()
我将得到
[,1,22,,,,,,,77777]
,因为
map
当然不会迭代空值。数据可以是任意的、字符串、对象、数字等。为了简单起见,在本例中使用数字。

在应用映射函数之前,可以
填充数组,以便迭代所有索引,包括空索引

let output = [, 1, 22, 333, 4444, 55555, 666666, 7777777]
作为
数组的第二个参数提供的映射函数

let result = input.fill().map((_,index)=>{/*...*/});
Spread syntax不会忽略空插槽,因此我们可以使用Spread syntax和
map
创建数组的副本。这还有一个额外的优点,即每个索引中的元素也可用

let result = Array.from({length: input.length}, (_, index)=>{/*...*/});

在应用映射函数之前,可以
填充
数组,以便迭代所有索引,包括空索引

let output = [, 1, 22, 333, 4444, 55555, 666666, 7777777]
作为
数组的第二个参数提供的映射函数

let result = input.fill().map((_,index)=>{/*...*/});
Spread syntax不会忽略空插槽,因此我们可以使用Spread syntax和
map
创建数组的副本。这还有一个额外的优点,即每个索引中的元素也可用

let result = Array.from({length: input.length}, (_, index)=>{/*...*/});

这里有另一种方法过于冗长,但它可以工作,对于for循环,您可以通过空值进行循环

arr=[0,1,2,7]
res=[]
f=假

for(让i=0;i这里有另一种方法过于冗长,但它可以工作,使用for循环,您可以通过空值进行循环

arr=[0,1,2,7]
res=[]
f=假
for(设i=0;imap()不能包含空值

map()不为没有值的数组元素执行函数

因此,使用for循环迭代数组:

let result = [...input].map((elem, idx)=>{/*...*/});
它产生[“”、“1”、“22”、null、null、null、null、null、“777”]

让我们跳过智能猜测空插槽中的数字的AI部分。

map()不能包含空值

map()不为没有值的数组元素执行函数

因此,使用for循环迭代数组:

let result = [...input].map((elem, idx)=>{/*...*/});
它产生[“”、“1”、“22”、null、null、null、null、null、“777”]


让我们跳过智能猜测空插槽中的数字的AI部分。

它必须是
input=[0,1,2,7]
还是可以简单地使用
Array.from({length:8},(u,index)=>index)
在您的用例中,或者只是
Array.from({length:8},(u,index)=>String(index)。重复(index))
首先?“数据可以是任意的、字符串、对象、数字等。” — 那么,“任意”数据的算法是什么呢?你假设整数可以填入缺失的点。
[1,2,3,99]
的预期结果是什么?
[1,2,a,99]
的预期结果是什么?@user4642212问题不是映射结果。而是如何“映射”(或其他什么)空值。例如
[1,1]
可能会产生
[{…},{…},{…}]
。因此您需要
arr.fill().map(…)
?我建议这样的
[0,1,2,3,4,5]。map((el,index)=>Array(el)。fill(null)。map(()=>index)。join(“”)
它必须是
输入=[0,1,2,7]
或者可以简单地使用
Array.from({length:8},({,index)=>index)
在您的用例中,或者只使用
Array.from({length:8},({,index)=>String(index)。重复(index))
开始?“数据可以是任意的、字符串、对象、数字等。” — 那么,“任意”数据的算法是什么呢?你假设整数可以填入缺失的点。
[1,2,3,99]
的预期结果是什么?
[1,2,a,99]
的预期结果是什么?@user4642212问题不是映射结果。而是如何“映射”(或其他什么)空值。例如,
[1,1]
可能会产生
[{…},{…},{…}]
。所以您想要
arr.fill().map(…)
?我建议类似这样的
[0,1,2,3,4,5]。map((el,index)=>Array(el)。fill(null)。map(()=>index)。join(“”)
为什么要创建一个全新的原型方法,而不是简单地使用
input.fill(null).map((val)=>(val==undefined?null:String(val).repeat(val))
Array.from(input,(val)=>(val==undefined?null:String(val).repeat(val))
?Array.fill()将改变input.Array.from()的内容很好,只是它创建了一个临时数组。不管有什么方法可以做到这一点。我将自己使用for循环:)为什么要创建一个完整的新原型方法,而不是简单地使用
input.fill(null).map((val)=>(val==未定义?null:String(val).repeat(val))
array.from(input,(val)=>(val==未定义?null:String(val).repeat(val))
?Array.fill()将改变输入的内容。Array.from()很好,只是它创建了一个临时数组。不管有什么方法可以做到这一点。我将自己使用for循环:)