Задать вопрос
@ekaterina-ceo

Как правильно разобрать массив?

Дан следующий объект:

[
  "characteristics[]=59143364",
  "characteristics[]=66553622",
  "page=2",
  "price_max=20444252",
  "price_min=2569146"
]

Требуется увеличить значение page на единицу.

$.each(paramsArr, function(i, value){
            let param = value.split('=');

            if (param[0] === 'page') {
                params.page = ++param[1];
            } else {
                params[param[0]] = param[1];
            }
        });


Результат:

{
  "page": 3,
 "characteristics[]": "66553622",
  "price_max": "20444252",
  "price_min": "2569146"
}


Позиция characteristics[] только одна, а должно быть две.

"characteristics[]=59143364",
 "characteristics[]=66553622",


Где ошибка?
  • Вопрос задан
  • 174 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
alekseyHunter
@alekseyHunter
Android developer
Странное решение. Зачем так хранить данные? Используйте объекты.

var arr= [
{
  characteristics: {first: 1, second: 2 },
  page: 2,
  price_max: 10,
  price_min = 1
},
{
  characteristics: {first: 1, second: 2 },
  page: 2,
  price_max: 10,
  price_min = 1
}
];

arr.forEach(function(element,i,arr) {
  element.page += 1;
};
Ответ написан
@SANTA2112
Если прямо в лоб (если не будет вложенностей), то можно так: https://jsfiddle.net/te0mqary/ .А вообще это обычная query string разбитая на массив, можно просто использовать библиотеку https://github.com/ljharb/qs
Ответ написан
Комментировать
hzzzzl
@hzzzzl
function inc(arr) {
	const index = arr.findIndex(k => k.startsWith('page='))
	if(index === -1) return arr 

	arr[index] = arr[index].replace(/=(.+)/, (m, s1) => '=' + (+s1 + 1))
	return arr
}

inc([
  "characteristics[]=59143364",
  "characteristics[]=66553622",
  "page=2",
  "price_max=20444252",
  "price_min=2569146"
])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы