如何在代码中使用 For 循环
How do I use the For loop in my code?
var string1 = "I am going to school.";
var string2 = "We need five different strings.";
var string3 = "Ace has to use the bathroom.";
var string4 = "Alex cant think of anything thing.";
var string5 = "Fingers are sometimes called digits.";
var string1word =(string1.substring(0,string1.search(" ")));
var string2word =(string2.substring(0,string2.search(" ")));
var string3word =(string3.substring(0,string3.search(" ")));
var string4word =(string4.substring(0,string4.search(" ")));
var string5word =(string5.substring(0,string5.search(" ")));
confirm(string1word+", " +", "+ string2word +", "+ string3word +", "+ string4word +", "+ string5word);
您好,我的任务是创建一个"程序",可以输出任何字符串的第一个单词。我已经完成了这个任务,但它非常重复。我的老师告诉我使用 for 循环函数来清理它,但我不知道如何格式化或使用这里的 for 循环。我想知道是否有人可以帮助我使用 for 循环并解释它在这里工作的原因/方式。
免责声明:我在 StackOverflow 上触及家庭作业问题的唯一原因是因为看起来您自己完成了作业的良好尝试。您的代码按原样工作,但您正在寻找改进它以满足其他条件的方法。这是值得尊敬的职业道德,在这种情况下,我很乐意为您提供帮助。
// create a reusable function
function firstWord(str) {
return str.substring(0, str.search(" "));
}
// define strings
var string1 = "I am going to school.";
var string2 = "We need five different strings.";
var string3 = "Ace has to use the bathroom.";
var string4 = "Alex cant think of anything thing.";
var string5 = "Fingers are sometimes called digits.";
// put strings in an array
var strings = [string1, string2, string3, string4, string5];
// use a loop to iterate through the array
for (var i = 0, len = strings.length; i < len; i++) {
// alert the firstWord of each string
alert(firstWord(strings[i]));
}
输出
I
We
Ace
Alex
Fingers
您也可以跳过分配string1
、string2
、... 单独stringN
,只需将它们直接放入strings
数组中
// define strings
var strings = [
"I am going to school.",
"We need five different strings.",
"Ace has to use the bathroom.",
"Alex cant think of anything thing.",
"Fingers are sometimes called digits."
];
// for loop here ...
编辑:如果您需要像代码中那样在一个长字符串中输出,则可以执行以下操作。
// create a reusable function
function firstWord(str) {
return str.substring(0, str.search(" "));
}
// define strings
var strings = [
"I am going to school.",
"We need five different strings.",
"Ace has to use the bathroom.",
"Alex cant think of anything thing.",
"Fingers are sometimes called digits."
];
// set savedWords array
var savedWords = [];
// use a loop to iterate through the array
for (var i = 0, len = strings.length; i < len; i++) {
// store first word in savedWords array
savedWords[i] = firstWord(strings[i]);
}
// output list of saved words separated by a comma
confirm(savedWords.join(", "));
这里的大多数代码都是相同的,但我们不是对每个单词调用alert
,而是将第一个单词保存到新的savedWords
数组中。
找到每个字符串的第一个单词后,我们在 savedWords
上调用 .join 以将单词列表输出为单个字符串。
高级:有一些方法可以使它更加简洁,但您的老师可能不允许使用更高级别的功能。这是我能写的符合您程序标准的最短程序
// create a reusable function
function firstWord(str) {
return str.substring(0, str.search(" "));
}
// define strings
var strings = [
"I am going to school.",
"We need five different strings.",
"Ace has to use the bathroom.",
"Alex cant think of anything thing.",
"Fingers are sometimes called digits."
];
// output firstWord-mapped array of strings
confirm(strings.map(firstWord).join(", "));
这使用 .map 对于初学者来说有点高级。基本思想是.map
允许您为数组中的每个项目调用一个函数,并返回一个包含每个函数调用结果的新数组。
下面是另一个简单的例子,可能有助于演示.map
是如何工作的。
// square a number function
function squareNumber(n) {
return n * n;
}
// set some numbers
var numbers = [1, 2, 3];
// get an array of the squares
var squares = numbers.map(squareNumber);
// output
confirm(squares.join(", "));
输出
1, 4, 9
作为单个表达式:对于说"代码可以更短"的反对者,您甚至可以将整个程序编写为单个表达式
confirm([
"I am going to school.",
"We need five different strings.",
"Ace has to use the bathroom.",
"Alex cant think of anything thing.",
"Fingers are sometimes called digits."
].map(function(s) { return s.substring(0, s.search(" ")); }).join(", "));
//=> I, We, Ace, Alex, Fingers
但是,您为此牺牲了很多可读性。我给你看这个例子只是为了证明JavaScript是非常富有表现力的,它允许你以非常整洁的方式将东西链接在一起。
无论如何,这里的教训是不要仅仅因为可以就以这种方式编写代码。更短的代码并不总是意味着更好。
请尝试这个,请
var s = [
"I am going to school.",
"We need five different strings.",
"Ace has to use the bathroom.",
"Alex cant think of anything thing.",
"Fingers are sometimes called digits."
];
for (var i=0, firstWord; i<s.length; i++){
firstword = s[i].substring(0,s[i].search(" "));
confirm(firstword);
}
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- For循环在Jquery中只运行一次
- 如何在for循环中使用计数器
- for循环中的JavaScript闭包
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- For循环在调用时未运行
- 如何使用for循环添加所有按钮'单击事件
- 如何更改在for循环中生成的圆的位置
- 为什么这个For循环会使浏览器实验室崩溃
- 为什么我使用javascript获得了一个无限的for循环
- 在for循环中使用多维数组设置google.maps.Marker图标
- 如何在angularJS中运行for循环而不使用html标记