Внутри массива есть неанглийский номер в виде строки, которую я хочу преобразовать в английский и поместить ее в логику и выполнить операцию строки шаблона для каждого div.
Вот образец моего кода
const bigdata = [{img:'http://anything/com/123.png',title:'डेंजर ऑफर', inv:'१७५०'}] //Here १७५० = 1750 NOTE: I have multiple objects like this in my code
let template='';
bigdata.forEach(offers => {
function offer_tag(){
if ((HERE I WANT CONVERTED NUMBER)<15000){
return `<span class = "badge badge-warning">नवीन</span>`
}
}
//This offer tag will be used in template string
У меня есть код преобразования из jQuery, но я очень смущен, как я могу использовать этот код для преобразования номера строки в английский номер и использования внутри оператора if. Вот код jQuery: (я скопировал из JavaScript - заменить на английское число)
var numbers = {
'०': 0,
'१': 1,
'२': 2,
'३': 3,
'४': 4,
'५': 5,
'६': 6,
'७': 7,
'८': 8,
'९': 9
};
function replaceNumbers(input) {
var output = [];
for (var i = 0; i < input.length; ++i) {
if (numbers.hasOwnProperty(input[i])) {
output.push(numbers[input[i]]);
} else {
output.push(input[i]);
}
}
return output.join('');
}
document.getElementById('r').textContent = replaceNumbers('१७५०');
Как правило, вы можете просто использовать if (+replaceNumbers(offers.inv) < 15000) {, однако есть несколько проблем. Прежде всего, данный код выглядит очень странно, почему вы объявляете функцию внутри стрелочной функции для forEach (оставшийся код или закрывающий } не указаны, поэтому я не могу сказать)? Во-вторых, replaceNumbers просто заменяет и не обрабатывает ошибки, если строка содержит нечисловые символы, например "१७hello५०". И последнее, но по крайней мере, replaceNumbers намного короче для записи с const replaceNumbers = s => s.replace(/[०१२३४५६७८९]/g, m => numbers[m]);.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если возможно, вы можете создавать новые объекты с преобразованными свойствами.
function replaceNumbers(input) {
var numbers = { '०': '0', '१': '1', '२': '2', '३': '3', '४': '4', '५': '5', '६': '6', '७': '7', '८': '8', '९': '9' };
return Array.from(input, c => numbers[c] || c).join('');
}
const
bigdata = [{img:'http://anything/com/123.png',title:'डेंजर ऑफर', inv:'१७५०'}],
converted = bigdata.map(o => Object.assign(...Object.entries(o).map(([k, v]) => ({ [k]: replaceNumbers(v) }))))
console.info(converted);Я думаю, что это здорово, но я также думаю, что исходный вопрос нуждался в «целочисленной» версии числа, а не только в переведенной строке. Я думаю, вы можете просто передать свой текущий результат в parseInt(). Если вы обновите свой ответ, мой будет лишним.
Код, который у вас есть, уже очень близок. Пытаться:
function parseIntHindi(text, radix){
var numbers = { '०': 0, '१': 1, '२': 2, '३': 3, '४': 4, '५': 5, '६': 6, '७': 7, '८': 8, '९': 9 };
function replaceNumbers(input) {
var output = [];
for (var i = 0; i < input.length; ++i) {
if (numbers.hasOwnProperty(input[i])) {
output.push(numbers[input[i]]);
} else {
output.push(input[i]);
}
}
return output.join('');
}
return parseInt(replaceNumbers(text), radix)
}
console.info(parseIntHindi("१७५०"));
console.info(parseIntHindi("१७५०") +1);
это вопрос о преобразовании числа или об итерации по массиву объектов и применении некоторой логики после преобразования в число? Куда должен идти результат во втором случае? добавьте часть HTML, чтобы проиллюстрировать проблему.