Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Javascript сортировка массива
#1
Здравствуйте.

Значение куки

PHP код:
<?php 
var arr = get_cookie("product").split(",");
var
arrres = new Array();
for(var
i = 0; i < arr.length; i++){
if(
arr[i] != "null"){
arr[i] = arr[i].split("-");
if(
arrres[ arr[i][0] ] == 'undefined'){
arrres[ arr[i][0] ] = new Array(arr[i][0],arr[i][1],arr[i][2])
}
else{
arrres[ arr[i][0] ][1] = [ arr[i][0] ][1] + arr[i][1];
}
}
}

Ошибка:
Код:
[04.05.2013 10:53:35] JavaScript - http://test1.ru/catalog/rolls
Event thread: click
Uncaught exception: TypeError: Cannot convert 'arrres[ arr[0] ]' to object
Error thrown at line 34, column 28 in setAddBasketProduct(id, count, price) in http://test1.ru/catalog/rolls:
arrres[ arr[0] ][1] = [ arr[0] ][1] + arr[1];
called from line 1, column 11 in <anonymous function>(event) in http://test1.ru/catalog/rolls:
setAddBasketProduct(2, 1, 500)

И почему-то я не попадаею сперва в блок
PHP код:
<?php 
if(arrres[ arr[i][0] ] == 'undefined'){
arrres[ arr[i][0] ] = new Array(arr[i][0],arr[i][1],arr[i][2])
}
Ведь сначало у меня arrres[ arr[0] ] == 'undefined'!!!

на выходе хочу получить массив:
Код:
[1] = [
        [0] = 1;
        [1] = 6;// количество товара
        [2] = 10234;// общая цена товара
]

Спасибо!

Добавлено через 30 минут
Ну немного починил:
PHP код:
<?php 
var arr = get_cookie("product").split(",");
var
arrres = new Array();
for(var
i = 0; i < arr.length; i++){
if(
arr[i] != "null"){
arr[i] = arr[i].split("-");
if(!
arrres[ arr[i][0] ]){
arrres[ arr[i][0] ] = new Array(arr[i][0],arr[i][1],arr[i][2]);
}
else{
arrres[ arr[i][0] ][1] = (parseInt(arrres[ arr[i][0] ][1]) + parseInt(arr[i][1]));
}
}
}
}
результат уже лучше:
Код:
array(2) { [ 1] => array(3) { [0] => string(2) " 1" [1] => int(3) [2] => string(4) "1120" } [ 2] => array(3) { [0] => string(2) " 2" [1] => int(2) [2] => string(3) "500" } }

Только вот почему-то он арефметику не хочет выполнять: arrres[ arr[i][0] ][1] = (parseInt(arrres[ arr[i][0] ][1]) + parseInt(arr[i][1]));
Ответ
#2
Virt Написал:Здравствуйте.

Значение куки
небольшая ошибка

И материал

http://javascript.ru/arithmetic
СЕО Оптимизация сайтов
Ответ
#3
gorodetskiy Написал:небольшая ошибка

И материал

http://javascript.ru/arithmetic

Спасибо, не помогло((
PHP код:
<?php 
if(get_cookie("product") != null){
var
arr = get_cookie("product").split(",");
var
arrres = new Array();
for(var
i = 0; i < arr.length; i++){
if(
arr[i] != "null"){
arr[i] = arr[i].split("-");
if(!
arrres[ arr[i][0] ]){
arrres[ arr[i][0] ] = new Array(arr[i][0], arr[i][1], arr[i][2]);
}
else{
arrres[ arr[i][0] ][1] = + arr[i][1];
}
}
}
}

результат:
Код:
array(1) { [ 1] => array(3) { [0] => string(2) " 1" [1] => int(1) [2] => string(4) "1120" } }
[1] => int(1) - должно быть [1] => int(6)

кука:
Код:
null%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120
Ответ
#4
Virt Написал:Спасибо, не помогло((
PHP код:
<?php 
if(get_cookie("product") != null){
var
arr = get_cookie("product").split(",");
var
arrres = new Array();
for(var
i = 0; i < arr.length; i++){
if(
arr[i] != "null"){
arr[i] = arr[i].split("-");
if(!
arrres[ arr[i][0] ]){
arrres[ arr[i][0] ] = new Array(arr[i][0], arr[i][1], arr[i][2]);
}
else{
arrres[ arr[i][0] ][1] = + arr[i][1];
}
}
}
}

результат:
Код:
array(1) { [ 1] => array(3) { [0] => string(2) " 1" [1] => int(1) [2] => string(4) "1120" } }
[1] => int(1) - должно быть [1] => int(6)

кука:
Код:
null%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120%2C%201-1-1120

Откройте ещё раз сайт и посмотрите внимательно синтаксис, первая же ошибка в том, что у вас справа от плюса пробел, которого не должно быть, что бы шло прибавление.

И вообще лучше используйте http://simplehtmldom.sourceforge.net/
СЕО Оптимизация сайтов
Ответ
#5
цикл проходит 7 раз
PHP код:
<?php 
arrres
[ arr[i][0] ][1] = arrres[ arr[i][0] ][1] + arr[i][1];
результат: array(1) { [ 1] => array(3) { [0] => string(2) " 1" [1] => string(7) "1111111" [2] => string(4) "1120" } }

Добавлено через 18 минут
Все ясно спасибо.
Ответ
#6
[SRC="javascript"]var array = cookies.split(', ').sort();
var temp = new Array();

array.forEach(function(value, key) {
var item = value.split('-');
var item_id = item[0];

if (typeof temp[item_id] === 'undefined') {
temp[item_id] = item;
}
else {
temp[item_id][1] ++;
temp[item_id][2] = parseInt(temp[item_id][2]) + parseInt(item.pop());
}
});[/SRC]

Цитата:[1: Array[3], 2: Array[3], 3: Array[3], 4: Array[3]]
1: Array[3]
0: "1"
1: 32
2: 35840
length: 3
__proto__: Array[0]
2: Array[3]
0: "2"
1: 5
2: 2500
length: 3
__proto__: Array[0]
3: Array[3]
0: "3"
1: "1"
2: "700"
length: 3
__proto__: Array[0]
4: Array[3]
0: "4"
1: "1"
2: "850"
length: 3
__proto__: Array[0]
length: 5
__proto__: Array[0]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Чтение массива и вычитание Milirina 0 1,212 07-24-2022, 03:21 PM
Последний пост: Milirina
  Уроки по JavaScript для начинающих webguru 5 3,825 01-19-2021, 08:41 PM
Последний пост: BITru
  Нужен программист javascript secondpro 0 2,201 02-28-2019, 03:46 AM
Последний пост: secondpro
  JavaScript калькулятор Antonio 14 2,947 11-22-2015, 08:06 PM
Последний пост: Antonio
  JavaScript nelegal 1 2,072 09-11-2011, 10:10 AM
Последний пост: Azagthtot

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)