我有两个数组
数组号1:
let search = ['ا', 'ب', 'ج', 'د', 'ه','و', 'ز', 'ح', 'ط', 'ي','ك', 'ل', 'م', 'ن', 'س','ع', 'ف', 'ص', 'ق', 'ر','ش', 'ت', 'ث', 'خ', 'ذ','ظ', 'ض', 'غ'];
数组号2:
let replace = ['1', '2', '3', '4', '5','6', '7', '8', '9', '10','20', '30', '40', '50', '60','70', '80', '90', '100', '200','300', '400', '500', '600', '700','800', '900', '1000'];
这是一个输入:
let word = "محمد";
我想在javascript中搜索变量word
的字母,并将它们替换为replace
数组中的等效数字。替换数组和搜索数组具有相同数量的字母和数字。
输出将是:
م 40
ح 8
م 40
د 4
total = 92
let word = "محمد";
let search = ['ا', 'ب', 'ج', 'د', 'ه', 'و', 'ز', 'ح', 'ط', 'ي', 'ك', 'ل', 'م', 'ن', 'س', 'ع', 'ف', 'ص', 'ق', 'ر', 'ش', 'ت', 'ث', 'خ', 'ذ', 'ظ', 'ض', 'غ'];
let replace = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100', '200', '300', '400', '500', '600', '700', '800', '900', '1000'];
if (word === "") {
document.write('the field is empty');
} else {
w = word.split("").filter(function(ele) {
return ele.replace(search, replace);
}).map(function(ele) {
return ele + ele;
});
}
console.log(w);
最佳答案
假设您的意思是预期结果是 92,您可以通过首先拆分输入,然后在 find
中查找项目的索引并使用 reduce
聚合结果来实现此目的> 从 replace
中查找值
let search = ['ا', 'ب', 'ج', 'د', 'ه','و', 'ز', 'ح', 'ط', 'ي','ك', 'ل', 'م', 'ن', 'س','ع', 'ف', 'ص', 'ق', 'ر','ش', 'ت', 'ث', 'خ', 'ذ','ظ', 'ض', 'غ'];
let replace = ['1', '2', '3', '4', '5','6', '7', '8', '9', '10','20', '30', '40', '50', '60','70', '80', '90', '100', '200','300', '400', '500', '600', '700','800', '900', '1000'];
let word = "محمد";
let result = word.split("")
.map(x => search.indexOf(x))
.reduce( (acc,i) => acc + parseInt(replace[i],10),0);
console.log(result);
您可以通过在 replace
数组中存储整数来改进这一点,这将消除对 parseInt
的需要
关于javascript 将数组 1 中的字母替换为数组 2 中的数字并计算这些数字的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69256292/