for循环中的选填参数

    const arr = [1, 2, 3]
    for (let i = 0; i < arr.length; i++) {
      console.log(i);
    } 

在日常开发中,很多时候会用到for循环,那你是否知道当for循环中的第一个参数或者第三个参数不填的时候,会有什么作用呢?

情况一  第一个参数不填 

var longestCommonPrefix = function(strs) {
if (strs.length === 0) return "";
let one = strs[0];
for (let i = 1; i < strs.length; i++) {
    let j = 0;
    // j 要小于strs数组中的从第二个元素开始的字符串长度
    // 并且要小于one,也就是strs第一个元素字符串的长度
    for (; j < strs[i].length && j < one.length; j++) {
        if (strs[i][j] !== one[j]) break;
    }
    // 第二个for循环的第一个参数不填,是为了在第二个for循环外面也能用到j参数
    one = strs[i].substr(0, j);
    if (one === "") return ""
}
return one;
};

for循环中第一个参数不填,是为了在for循环外面,也能使用第一个参数  


 情况二  第三个参数不填 

var romanToInt = function(s) {
const obj = {
    I: 1,
    IV: 4,
    V: 5,
    IX: 9,
    X: 10,
    XL: 40,
    L: 50,
    XC: 90,
    C: 100,
    CD: 400,
    D: 500,
    CM: 900,
    M: 1000,
};
let result = 0;
for (let i = 0; i < s.length;) {
    if (i + 1 < s.length && obj[s.substring(i, i + 2)]) {
        result += obj[s.substring(i, i + 2)];
        i += 2;
    } else {
        result += obj[s.substring(i, i + 1)];
        i++;
    }
}
return result;
};

 for循环中第三个参数不填,是为了在不同的条件下,为for循环设置不同的步长。


拓展 
substr 和 substring的区别 

    const str = "123456789";
    console.log(str.substr(2,5)); // 34567
    console.log(str.substring(2,5)); // 345 
    console.log(str.slice(2, 5)); // 345
    console.log(str); // 123456789

substr 第二个参数是长度
substring 第二个参数是索引值
slice 类似于substring,第二个参数也是索引值

 

### 如何在C语言中给数组赋空值 在C语言中,可以通过多种方式实现数组的初始化为空值。以下是几种常见的方法及其具体解释: #### 使用 `{}` 进行初始化 当声明一个数组时,如果只提供部分初始值,则未指定的部分会被自动设置为零[^1]。对于完全清空的情况,可以直接使用大括号而不写任何内容来完成初始化操作。 ```c int arr[10] = {}; ``` 这种方式下,所有的元素都会被设成`0`或对应的类型的默认值(比如字符型则可能充的是`\0`, 即ASCII码中的null character)。不过需要注意的是,这种方法仅适用于静态分配的局部变量或者是全局/静态存储期的对象;如果是动态分配或者栈上的临时对象,则需要其他手段来进行置零处理[^2]。 #### 利用 `memset()` 函数 另一种有效的方法是调用标准库函数`memset()` 来手动将整个数组的内容设定为特定数值——通常是全零状态表示“空白”。下面展示了一个例子: ```c #include <string.h> char str_arr[50]; memset(str_arr, '\0', sizeof(str_arr)); ``` 这里我们择了`'\0'`(即NULL终止符),因为它经常用于标志字符串结束的位置,并且也适合作为代表无意义的数据位模式之一。此命令的效果相当于逐一遍历目标区域内的每一个字节并将其替换为目标值(`\0`)直到达到预定范围为止。 另外值得注意的一点是,尽管上述代码片段针对的是字符型数组(char array), 但实际上该技术同样能够应用于其它基本数据类型组成的连续内存块上,只要确保所充值适合那些类型即可。 #### 循环逐一赋值法 最后还有一种较为原始但也非常直观的办法就是借助简单的for循环语句显式地对每个单独索引位置分别执行赋值动作: ```c double num_array[7]; for(int i=0;i<7;i++) { num_array[i]=0; } ``` 这段程序展示了怎样通过迭代过程把双精度浮点数形式构成的小规模向量重置回原点附近的状态。当然实际应用当中可以根据需求灵活调整内部逻辑结构以及参数配置等内容[^3]。 综上所述,在C编程环境下存在至少三种途径可以帮助开发者达成相似目的—即将某个已知界限内定义好的一维或多维表单彻底清除干净以便后续进一步加工利用之需。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我来C咯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值