Удаление запятой из значения свойства объекта

#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>