如何使用for循环在数组中创建多个字符串?

时间:2016-08-24 19:59:25

标签: javascript arrays for-loop

我目前正在努力的挑战的目标是采取阵列并添加一个'到每个元素的末尾(希望每个单词多元化)。

这是我能够想到的,但我确定我没有正确地做到这一点:

var pets = ['dog', 'cat', 'rat'];
for (pets[i] = pets[i] + 's';);
console.log(pets);

我意识到我可能并不是那么接近答案,但是这一课提供了一些技巧而没有解释他们如何/为什么工作。 pets[i] = pets[i] + 's';的整行是本课所建议的。

我希望自己仍然能够自己解决问题,所以如果有人能够解释为什么for循环的结构与你构建它的方式一样,那就太棒了! / p>

6 个答案:

答案 0 :(得分:3)

Array#map

的经典用例

var pets = ['dog', 'cat', 'rat'];
var pluralVersion = pets.map(function(el) {
  return el + 's';
});
console.log(pluralVersion);

但是,采用您的方法,在for-loop

中为数组中的每个项目设置新值

var pets = ['dog', 'cat', 'rat'];
for (var i = 0, length = pets.length; i < length; i++) {
  pets[i] = pets[i] + 's';
}
console.log(pets);

答案 1 :(得分:1)

您的for语法不正确 - 它应该包含三个部分,如下所示:

var pets = ['dog', 'cat', 'rat'];
for (var i = 0; i < pets.length; i++) {   //Initialize i as 0. As long as i is less than the length of items in 'pets', continue looping. With each loop, increment i by 1.
   pets[i] = pets[i] + 's';
}
console.log(pets);

答案 2 :(得分:1)

在现代Javascript中,使不变性​​的概念非常流行,您实际上并没有更改原始数组中的值,而是函数映射到这些值并接收新数组。它就像

一样简单
const pets = ['dog', 'cat', 'rat'];
const petsPlural = pets.map(pet => `${pet}s`);

它可能会压倒你,所以让我们解构每个部分。

首先是map。这是每个数组的属性,是一个函数。当你应用它时,你提供一个参数,这个参数同样是一个函数,它将一个一个地应用于原始数组中的每个元素。因此,调用someArray.map的返回值是一个新数组。最酷的是原始数组(在您的情况下,pets)不会被更改。它保留了原始价值!

接下来是(...) => ...语法。它是arrow function,已在ES6中引入,并且已被大多数现代浏览器(而非Safari)支持。例如,

(arg1, arg2) => arg1 + arg2

的简短表示法
function (arg1, arg2) {
  return arg1 + arg2
}

最后,那个反击的东西。它被称为template literal。此字符串中${}中包含的所有内容都会被评估,而外部的任何内容都是按原样放置的。事实上,当你写作时,请说

`${abc}def${123}xyz`

等同于

abc + 'def' + 123 + 'xyz'

所以,在这种情况下,

`${pet}s`

相当于

pet + 's'

您甚至可以看到现在阅读这部分代码是多么容易。

答案 3 :(得分:0)

我假设您是JavaScript新手。 如果情况并非如此,请原谅我之前的陈述。

在JavaScript中,当您在两个字符串对象之间使用+时,结果是附加的字符串。

这意味着什么,

let appendedString = "string1" + "string2" ;
console.log(appendedString)
//output = string1string2

现在,就你的例子而言,你应该追加一个&#39;在每个字符串的末尾,将该字符串转换为复数形式。

因此,提示是使用for循环迭代每个字符串并附加&#39;&#39;&#39;&#39;他们每个人。

现在,对于迭代,我的第一种方法是使用map function。但是,确切地说,这在这个特殊的例子中并不重要。 希望,这对你来说很清楚。

答案 4 :(得分:0)

我喜欢这个问题。对于这项工作,您在JS中不需要任何for循环。是Array.prototype.map();我们也要处理违规行为。

var   pets = ['dog', 'cat', 'rat', 'deer', 'goose', 'mouse'],
       lut = {mouse: "mice", goose: "geese", deer: "deer"},
pluralPets = pets.map(p => lut[p] ? lut[p] : p+"s");
console.log(pluralPets);

答案 5 :(得分:0)

如果你正在使用我认为你正在寻找的for循环方法,那么写一个更好的方法来写Rayon的答案就是;

&#13;
&#13;
var pets = ['cat', 'dog', 'rat'];
var length = pets.length;

for (i = 0; i < length; i++) {
        pets[i] = pets[i] + 's';
}

console.log(pets);
&#13;
&#13;
&#13;