我從服務回傳以下陣列
indexLabelServices = [ ' Pear', ' Apple', ' Banana',' Peach',' Orange',' Cherry' ]
對于陣列的每個元素,我想給出不同的label(翻譯)
這是我的代碼
const convertServicesLabels = (indexLabelServices) => {
let label="";
for (let index = 0; index < indexLabelServices.length; index) {
const element = indexLabelServices[index];
if(element === " Pear){
label=Pera;
}else if(element ===" Apple"){
label=Mela;
}else if(element ===" Banana"){
label=Platano;
}else if(element ===" Peach"){
label=Pesca
}else if(element ===" Orange"){
label=Arancia;
}else if(element ===" Cherry"){
label=Ciliegia;
}
}
return label;
}
我用這種方法得到的結果是唯一的元素Orange被翻譯成Arancia,而不是其他元素被翻譯。
我究竟做錯了什么?我如何操作/翻譯陣列的任何元素indexLabelServices?
uj5u.com熱心網友回復:
問題位于每次迭代都重寫變數的 for 回圈中label。另一個問題是迭代該陣列。當您這樣做時, index在進入 for 回圈體之前進行變數索引增量,因此請嘗試使用index . 在這種情況下,將在一次 for 回圈迭代后增加索引。
如果您需要回傳所有翻譯的陣列,請將您的代碼編輯為以下內容:
let indexLabelServices = [ ' Pear', ' Apple', ' Banana',' Peach',' Orange',' Cherry' ];
const convertServicesLabels = (indexLabelServices) => {
let translations = [];
for (let index = 0; index < indexLabelServices.length; index ) {
const element = indexLabelServices[index];
if(element === " Pear"){
translations[index] = 'Pera';
}
else if(element ===" Apple"){
translations[index] = 'Mela';
}
else if(element ===" Banana"){
translations[index] = 'Platano';
}
else if(element ===" Peach"){
translations[index] = 'Pesca';
}
else if(element ===" Orange"){
translations[index] = 'Arancia';
}
else if(element ===" Cherry"){
translations[index] = 'Ciliegia';
}
}
return translations;
}
console.log(convertServicesLabels(indexLabelServices));
uj5u.com熱心網友回復:
你只回傳你存盤在標簽中的最后一個元素而不是改變陣列,嘗試在串列上使用 map 。
let indexLabelServices = [' Pear', ' Apple', ' Banana', ' Peach', ' Orange', ' Cherry']
indexLabelServices = indexLabelServices.map(element => {
switch (element.toLocaleLowerCase().trim()) {
case "pear":return "Pera";
case "apple":return "Mela";
case "banana":return "Platano";
case "peach":return "Pesca";
case "orange":return "Arancia";
case "cherry":return "Ciliegia";
default:return "Unknown";
}
})
console.log(indexLabelServices)
uj5u.com熱心網友回復:
設定一個包含翻譯的物件,然后使用陣列元素將原始陣列映射到一個新陣列,以從字典中回傳翻譯。
const indexLabelServices = [' Pear', ' Apple', ' Banana', ' Peach', ' Orange', ' Cherry'];
const dict = {' Pear':'Pera', ' Apple':'Mela', ' Banana':'Platano', ' Peach':'Pesca', ' Orange':'Arancia', ' Cherry':'Ciliegia'};
console.log(dict);
let translations = indexLabelServices.map(x=>dict[x]);
console.log(translations)
uj5u.com熱心網友回復:
您使用 1 個變數label來分配值,因此它只會分配最后一個值。
switch如果您只想根據運算式賦予價值,那么更好的選擇是使用。
switch 陳述句計算運算式,將運算式的值與 case 子句匹配,并執行與該 case 關聯的陳述句,以及匹配 case 后面的陳述句。
let indexLabelServices = [' Pear', ' Apple', ' Banana', ' Peach', ' Orange', ' Cherry']
let result = []
for (let i of indexLabelServices) {
switch (i) {
case " Pear":
result.push("Pera");
break;
case " Apple":
result.push( "Mela");
break;
case " Banana":
result.push("Platano");
break;
case " Orange":
result.push("Arancia");
break;
case " Peach":
result.push("Pesca");
break
case " Cherry":
result.push("Ciliegia");
break;
}
}
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424736.html
標籤:javascript 数组 功能 for循环
