[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сравнение 2-х именнованых массивов
DarkGuy
Добрый вечер!
есть 2 именованных массива;
arr_get['content']=> vt
arr_get['pen']=>1

и
click_get['content']=> vt
click_get['pen']=>2
click_get['xren']=>1


хочу вывести массив с различиями, т.е.
получить массив
arr3['pen']=>2
arr3['xren']=>1

не могу придумать как это сделать, пока решил проблему так:

    for( var arr_get_Key in arr_get ) {
for( var click_get_Key in click_get ) {
if(arr_get_Key == click_get_Key && arr_get[arr_get_Key] == click_get[click_get_Key]){}else{
alert(click_get_Key+'=>'+click_get[click_get_Key]);
// далее код вывода
}
}


ключи массива меняются.

Но данный способ не оптимален.
Не подскажите как решить это задачу?
moskitos80
То что ты назвал именованными массивами - в Javascript является объектами. Поэтому (за некоторым исключением) логика применимая к массивам тут не работает.

Вот как вариант:

var arr_get = {
content : "vt",
pen: 1
},

click_get = {
content : "vt",
pen : 2,
xren : 1
};

/**
* Получить все свойства arr1, отсутствующие в arr2
*/

function diff(arr1, arr2) {
var diff = {}, key;
for( key in arr1 ) {
if (arr1.hasOwnProperty(key) && arr2.hasOwnProperty(key)) {
if (arr1[key] !== arr2[key]) {
diff[key] = arr1[key];
}
}
else {
diff[key] = arr1[key];
}
}

return diff;
}

console.log(diff(arr_get, click_get)); // Object {pen: 1}
console.log(diff(click_get, arr_get)); // Object {pen: 2, xren: 1}


_____________
Сложное - просто. Простое сложно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.