检查数组中的字符串元素以进行操作
Check string elements in an array to manipulate
我有以下从服务返回的数组
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
,其他元素没有被翻译。
我做错了什么?我如何 manipulate/translate 数组的任何元素 indexLabelServices
?
您只返回存储在标签中的最后一个元素而不改变数组,请尝试在列表上使用 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)
问题出在 for 循环中,您每次迭代都会重写变量 label
。另一个问题是遍历该数组。当您执行 ++index
时,变量索引会在进入 for 循环体之前递增,因此请尝试使用 index++
。在这种情况下,将在 for 循环的一次迭代后增加索引。
如果您需要 return 所有翻译的数组,请将您的代码编辑为如下内容:
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));
设置一个包含翻译的对象,然后使用数组元素将原始数组映射到一个新数组 return 来自字典的翻译。
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)
您使用了 1 个变量 label
来赋值,所以它只会赋最后一个值。
如果您只想根据表达式赋值,那么使用 switch
也是一个更好的选择。
The switch statement evaluates an expression, matching the expression's value to a case clause, and executes statements associated with that case, as well as statements in cases that follow the matching 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)
我有以下从服务返回的数组
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
,其他元素没有被翻译。
我做错了什么?我如何 manipulate/translate 数组的任何元素 indexLabelServices
?
您只返回存储在标签中的最后一个元素而不改变数组,请尝试在列表上使用 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)
问题出在 for 循环中,您每次迭代都会重写变量 label
。另一个问题是遍历该数组。当您执行 ++index
时,变量索引会在进入 for 循环体之前递增,因此请尝试使用 index++
。在这种情况下,将在 for 循环的一次迭代后增加索引。
如果您需要 return 所有翻译的数组,请将您的代码编辑为如下内容:
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));
设置一个包含翻译的对象,然后使用数组元素将原始数组映射到一个新数组 return 来自字典的翻译。
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)
您使用了 1 个变量 label
来赋值,所以它只会赋最后一个值。
如果您只想根据表达式赋值,那么使用 switch
也是一个更好的选择。
The switch statement evaluates an expression, matching the expression's value to a case clause, and executes statements associated with that case, as well as statements in cases that follow the matching 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)