#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть объект, одна из пар которого имеет значение, в котором есть запятая. Я хочу удалить эту запятую для всех таких значений в объекте и вернуть измененный объект. Объект выглядит следующим образом —
var obj = [
{
id: 1,
Product1: "Table",
Phone1: "9878987",
Price:"21,000"},
{
id: 2,
Product1: "Chair",
Phone1: "9092345",
Price:"23,000"},
{
id: 3,
Product1: "Cupboard",
Phone1: "9092345",
Price:"90,000"}
];
alert(JSON.stringify(obj));
Я хочу удалить запятую в значении цены (например, — 23 000 ==> 23000). Как это можно сделать?
Комментарии:
1. Можете ли вы показать нам, что вы пробовали до сих пор?
Ответ №1:
Вы можете использовать Array.prototype.map() для создания нового массива и String.prototype.replace() для удаления запятой из Price
свойства
Код:
const obj = [{id: 1,Product1: "Table",Phone1: "9878987",Price:"21,000"},{id: 2,Product1: "Chair",Phone1: "9092345",Price:"23,000"},{id: 3,Product1: "Cupboard",Phone1: "9092345",Price:"90,000"}]
const result = obj.map(({ Price, ...rest }) => ({
...rest,
Price: Price.replace(/,/, '')
}))
console.log(result)
Комментарии:
1. Перед заменой, как проверить, что значение имеет запятую или нет в том же цикле? Предположим, что запятая доступна как в полях phone, так и в price
Ответ №2:
вы можете сделать это с помощью регулярного выражения без использования цикла.
var obj= ... //your array
obj= JSON.stringify(obj);
obj= obj.replace(/(?=,(?!"))(,(?!{))/g,"");
obj= JSON.parse(obj) //you get you object without , in between your values
Ответ №3:
Попробуйте это, это сработает :
var obj = [
{
id: 1,
Product1: "Table",
Phone1: "9878987",
Price:"21,000"},
{
id: 2,
Product1: "Chair",
Phone1: "9092345",
Price:"23,000"},
{
id: 3,
Product1: "Cupboard",
Phone1: "9092345",
Price:"90,000"}
];
for (var i in obj) {
var Price = obj[i].Price.replace(',','');
obj[i].Price = Price;
}
console.log(obj);
Рабочая скрипка: https://jsfiddle.net/pn3u8pdh /
Ответ №4:
Для замены можно использовать регулярное выражение. Это должно работать для любого количества запятых в строке.
var obj = [{
id: 1,
Product1: "Table",
Phone1: "9878987",
Price: "1,21,000"
}, {
id: 2,
Product1: "Chair",
Phone1: "9092345",
Price: "23,000"
}, {
id: 3,
Product1: "Cupboard",
Phone1: "9092345",
Price: "90,000"
}];
var modifiedArray = obj.map(function(currentObj) {
var replaceRegex = new RegExp(",", "g");
currentObj.Price = currentObj.Price.replace(replaceRegex, "");
return currentObj;
});
document.querySelector("#result").innerHTML =
JSON.stringify(modifiedArray);
<div id="result">
</div>