есть два массива:
Первый
[{"order_status_id":"1","name":"Принят","nameshop":"улица Решетникова, д.5","number_act":"494","date_added":"2015-04-06 14:57:52","date_of_readiness":"0000-00-00","shop_id":"5","master_id":"7","namemaster":"Анисимов Валерий","price":"1500.0000","outgo":"0.0000","paid_id":"0","collection_id":"0","device":"Hp povilion g6","action":"","textaction":"Изменить"},{"order_status_id":"1","name":"Принят","nameshop":"улица Решетникова, д.5","number_act":"493","date_added":"2015-04-06 13:03:44","date_of_readiness":"0000-00-00","shop_id":"5","master_id":"7","namemaster":"Анисимов Валерий","price":"1500.0000","outgo":"0.0000","paid_id":"1","collection_id":"0","device":"iphone 4s","action":"","textaction":"Изменить"},{"order_status_id":"1","name":"Принят","nameshop":"улица Решетникова, д.5","number_act":"492","date_added":"2015-04-06 11:05:27","date_of_readiness":"0000-00-00","shop_id":"5","master_id":"7","namemaster":"Анисимов Валерий","price":"0.0000","outgo":"0.0000","paid_id":"1","collection_id":"0","device":"Hts Desier HD","action":"","textaction":"Изменить"}]
это массив который хранится в localStorage ,
и второй массив который является ответом ajax запроса
[{"paid_id":"0","number_act":"492"}]
надо по полю "number_act" найти элемент массива и заменить значение paid_id. Есть уже готовая функция , которая это делает ? мой код не работает :
function Paid(paid,number_act) {
var paid = paid;
var number_act = number_act;
console.log(paid,number_act);
$.ajax({
type: 'POST',
dataType: 'json',
url: 'index.php?route=catalog/accounting_akt/PaidCollection&token=' + token,
cache:true,
resetForm: true,
data: {number_act : number_act, paid : paid},
success: function(results) {
$.each(results, function (index, value) {
var number_act = value['number_act'];
var paid = value['paid_id'];
});
console.log(number_act,paid);
var resultsave = JSON.stringify(localStorage.getItem('result'));
resultsave = JSON.parse(resultsave);
console.log(resultsave);
$.each(resultsave, function(item) {
if (item['number_act'] == number_act)
item['paid'] == paid;
});
console.log(resultsave);
}
});
}
В результате у меня получилось заменить значение в массиве следующем образом :
function Paid(paid,number_act) {
var paid = paid;
var number_act = number_act;
$.ajax({
type: 'POST',
dataType: 'json',
url: 'index.php?route=catalog/accounting_akt/PaidCollection&token=' + token,
cache:true,
resetForm: true,
data: {number_act : number_act, paid : paid},
success: function(results) {
var resultsave = JSON.parse(localStorage.getItem('result'));
function setPaid(resultsave) {
$.each(resultsave, function(key, item) {
if (item['number_act'] == number_act) {
resultsave[key]['paid_id'] = paid;
}
});
return resultsave;
}
var result = setPaid(resultsave);
localStorage.setItem('result', JSON.stringify(result));
}
});
}
Рискну предположить что поменять нужно в первом. Тогда так
http://jsfiddle.net/os6j30rk/
(Из первого массива убрал несколько полей чтобы уменьшить количество кода)
var array1 = [{
"order_status_id":"1",
"name":"Принят",
"nameshop":"улица Решетникова, д.5",
"number_act":"494",
"paid_id":"0",
},{
"order_status_id":"1",
"name":"Принят",
"nameshop":"улица Решетникова, д.5",
"number_act":"493",
"paid_id":"1",
},{
"order_status_id":"1",
"name":"Принят",
"nameshop":"улица Решетникова, д.5",
"number_act":"492",
"paid_id":"1",
}],
array2 = [{
"paid_id":"0",
"number_act":"492"
}];
function setPaid(array1, array2) {
var ix1, ix2;
for (var ix1 = array1.length - 1; ix1 >= 0; ix1 -= 1) {
for (var ix2 = array2.length - 1; ix2 >= 0; ix2 -= 1) {
if (array1[ix1].number_act === array2[ix2].number_act) {
array1[ix1].paid_id = array2[ix2].paid_id;
}
}
}
}
setPaid(array1, array2);
console.log(array1);
Если Я правильно понял Вашу задачу, то вот решение. http://jsfiddle.net/Ls0m2m7a/
var firstArr = [{
"order_status_id": "1",
"name": "Принят",
"nameshop": "улица Решетникова, д.5",
"number_act": "494",
"date_added": "2015-04-06 14:57:52",
"date_of_readiness": "0000-00-00",
"shop_id": "5",
"master_id": "7",
"namemaster": "Анисимов Валерий",
"price": "1500.0000",
"outgo": "0.0000",
"paid_id": "0",
"collection_id": "0",
"device": "Hp povilion g6",
"action": "",
"textaction": "Изменить"
}, {
"order_status_id": "1",
"name": "Принят",
"nameshop": "улица Решетникова, д.5",
"number_act": "493",
"date_added": "2015-04-06 13:03:44",
"date_of_readiness": "0000-00-00",
"shop_id": "5",
"master_id": "7",
"namemaster": "Анисимов Валерий",
"price": "1500.0000",
"outgo": "0.0000",
"paid_id": "1",
"collection_id": "0",
"device": "iphone 4s",
"action": "",
"textaction": "Изменить"
}, {
"order_status_id": "1",
"name": "Принят",
"nameshop": "улица Решетникова, д.5",
"number_act": "492",
"date_added": "2015-04-06 11:05:27",
"date_of_readiness": "0000-00-00",
"shop_id": "5",
"master_id": "7",
"namemaster": "Анисимов Валерий",
"price": "0.0000",
"outgo": "0.0000",
"paid_id": "1",
"collection_id": "0",
"device": "Hts Desier HD",
"action": "",
"textaction": "Изменить"
}];
var secondArr = [{"paid_id": "0", "number_act": "492"}];
$.each(secondArr, function (indexSec, valueSec) {
$.each(firstArr, function (index, value) {
if (secondArr[indexSec]['number_act'] == value['number_act']) {
secondArr[indexSec]['paid_id'] = value['paid_id'];
}
});
});
console.log(secondArr);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте,подскажите, пожалуйста, можно ли сразу в переменную считать содержимое div? например в jquery есть методhtml() есть ли что то похоже...
У меня есть сайт, серфинг страниц реализован через historyjs, в консоли постоянно висит такое сообщение:
Впервые столкнулся с обработкой json данныхНашел простой пример и вроде бы разобрался