2016-08-24 48 views
0

我目前正在研究的挑戰的目標是獲取一個數組並在其每個元素的末尾添加's'(希望將每個單詞複數化)。如何使用for循環將數組中的字符串複數化?

這是我能想出的,但我敢肯定,我不是在做正確的:

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

我意識到我可能不是所有的接近答案,但本課只是拋出一些提示而不解釋他們如何/爲什麼會工作。整個行pets[i] = pets[i] + 's';是本課提出的。

我希望仍然能夠自己解決答案,所以如果有人可以包括一個解釋,爲什麼for循環結構的方式,你碰巧構造它,這將是太棒了!

+1

請重新閱讀[爲'for'語句文檔(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for )。 – 2016-08-24 20:06:20

+0

你錯過了對數組的一些理解,而不是循環。關鍵是不要嘗試使用字符串循環。你想循環使用整數,就像你已經知道該怎麼做;在這種情況下,這個整數就是'我'(參見泰勒的答案)。然後,您可以在建議的行中使用'i'來更新每個循環迭代 – Paulpro

回答

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

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); 
+1

+1上的每個數組元素,但for循環不接受參數。 for循環可以使用三個表達式,或者一個變量聲明語句和兩個表達式。 – Paulpro

+1

你沒有聲明'我'。 – 2016-08-24 20:11:18

+0

@Paulpro你是對的,我從我的帖子中刪除了錯誤信息。 @torazaburo啊我忘了我的'var',道歉。謝謝! – Santi

0

在現代的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' 

你甚至可以看到現在閱讀這部分內容是多麼容易代碼。

0

我假設你是JavaScript新手。 如果情況並非如此,請原諒我以前的發言。

在JavaScript中,當您在兩個字符串對象之間使用+時,結果爲附加字符串。

它的意思是,

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

現在,你的榜樣,你應該附加一個「s」在每個字符串的結束這個字符串轉換成其複數形式。

這樣的提示是使用for循環每串來遍歷和「的」附加到他們中的每一個。現在

,迭代,我的第一個方法是使用map function。但,在這個特定的例子中確切地說它並不重要 希望,這對你很有幫助

0

我喜歡這個問題,對於這份工作,你不需要任何for loop在JS中。 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);

0

如果您使用的是for循環的做法,我相信你正在尋找更好的方法來寫麗陽的回答是;

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

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

 
console.log(pets);

相關問題