如何在代码中使用 For 循环

How do I use the For loop in my code?

本文关键字:For 循环 代码      更新时间:2023-09-26
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

您也可以跳过分配string1string2、... 单独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);
}