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,第二个参数也是索引值