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循环:)