forEach函数中的while循环[重复]

Posted

技术标签:

【中文标题】forEach函数中的while循环[重复]【英文标题】:While loop in a forEach function [duplicate] 【发布时间】:2021-08-10 09:50:51 【问题描述】:

在 forEach 函数中循环数组项时,我在 js 中遇到了问题。 我只是有一个 ID 数组,其中一些 ID 的字符少于 10 个,我想在开头用“0”填充。 例子: myArray = ["1234567890", "0123456789", "12345678"] 在这种情况下,我想用"0" --> "0012345678" 填写最后一项。 当然,它也可以通过其他各种方式实现,但我就是不明白为什么它不起作用。

这是我的代码:

myArray.forEach(Id =>
    while(Id.length < 10)
        Id= "0" + Id;
    
)

【问题讨论】:

你到底想达到什么目标? 究竟是什么“不起作用”...? 【参考方案1】:

当您执行Id= "0" + Id; 时,您只是在更新参数 值。完成后,该参数值不会保存在任何地方。

如果你想更新数组中的值,要么分配回现有数组,要么(更常见)通过map 创建一个新数组:

myArray = myArray.map(Id => 
    while (Id.length < 10) 
        Id = "0" + Id;
    
    return Id;
);

或者现在,您可以使用 padStart 代替 while 循环:

myArray = myArray.map(Id => Id.padStart(10, "0"));

这是一个分配回原始数组的示例,以防您想这样做:

myArray.forEach((Id, index) => myArray[index] = Id.padStart(10, "0"));

活生生的例子:

// Creating a new array (1)
let myArray1 = ["1234567890", "0123456789", "12345678"];
myArray1 = myArray1.map(Id => 
    while (Id.length < 10) 
        Id = "0" + Id;
    
    return Id;
);
console.log(myArray1);

// Creating a new array (2)
let myArray2 = ["1234567890", "0123456789", "12345678"];
myArray2 = myArray2.map(Id => Id.padStart(10, "0"));
console.log(myArray2);

// Updating the existing array
let myArray3 = ["1234567890", "0123456789", "12345678"];
myArray3.forEach((Id, index) => myArray3[index] = Id.padStart(10, "0"));
console.log(myArray3);

【讨论】:

感谢您更快的回答,现在可以使用了!顺便提一句。在您的第二个示例中使用 padStart 函数我不需要返回值的原因是什么? @itsmeMarc - 这是一个简洁的箭头函数(=&gt; 之后没有)。主体完全由单个表达式组成,该表达式的结果是函数的返回值。更多 here 和 here(以及我最近一本书的第 3 章——如果你有兴趣,可以在我的个人资料中链接)。【参考方案2】:

如果您想使用 forEach,您还必须获取数组并更改其内容。

myArray.forEach((Id, index, arr) =>

    while(Id.length < 10)
        Id = "0" + Id;
    
    arr[index] = Id;
);

【讨论】:

@decpk 感谢您的编辑,但您错了。 arg[index] = Id 可以在 while 循环之外 我只是格式化了你的代码,没有添加任何东西 @decpk 好的,谢谢。早上太早了;)

以上是关于forEach函数中的while循环[重复]的主要内容,如果未能解决你的问题,请参考以下文章

foreach 循环内的 while 循环仅返回 1 行

删除Foreach循环中的重复项

vb中的循环语句

在 foreach 循环中的 if 语句中的 while 循环...无法正常工作

qt 循环函数都有哪些?像c语言的for while类似的那种?

PHP while 循环