Еще одна версия, использующая reduce() method
:
var arr1 = new Array({name: "lang", value: "English"}, {name: "age", value: "18"});
var arr2 = new Array({name : "childs", value: '5'}, {name: "lang", value: "German"});
var arr = arr1.concat(arr2).reduce(function(prev, current, index, array){
if(!(current.name in prev.keys)) {
prev.keys[current.name] = index;
prev.result.push(current);
}
else{
prev.result[prev.keys[current.name]] = current;
}
return prev;
},{result: [], keys: {}}).result;
document.getElementById("output").innerHTML = JSON.stringify(arr,null,2);
Cookies и локальное хранилище служат разным целям. Cookies в первую очередь предназначены для чтения на стороне сервера, локальное хранилище может быть прочитано только на стороне клиента. Итак, вопрос в том, кому нужны эти данные в вашем приложении - клиенту или серверу?
Если клиенту (вашему JavaScript), то, конечно, переключайтесь. Вы теряете пропускную способность, отправляя все данные в каждом заголовке HTTP.
Если это ваш сервер, то локальное хранилище не так полезно, потому что вам придется как-то пересылать данные (с помощью Ajax, скрытых полей формы или чего-то еще). Это может быть приемлемо, если серверу нужно только небольшое подмножество всех данных для каждого запроса.
Однако в любом случае вы захотите оставить сессионный cookie как cookie.
Что касается технической разницы, а также моего понимания:
Помимо того, что это старый способ сохранения данных, Cookies дают вам ограничение в 4096 байт (4095, на самом деле) - это на одну Cookie. Локальное хранилище может достигать 5MB на домен - SO Question также упоминает его
localStorage
является реализацией Storage
интерфейса. Он хранит данные с без срока действия, и очищается только через JavaScript или очистку кэша браузера / локально хранимых данных - в отличие от истечения срока действия cookie.
Что ж, скорость локального хранилища во многом зависит от браузера, который использует клиент, а также от операционной системы. Chrome или Safari на Mac могут быть намного быстрее, чем Firefox на ПК, особенно с новыми API. Как всегда, тестирование - ваш друг (тестов я не нашел).
Я действительно не вижу большой разницы в использовании файлов cookie и локального хранилища. Кроме того, вам следует больше беспокоиться о проблемах совместимости: не все браузеры даже начали поддерживать новые API-интерфейсы HTML5, поэтому файлы cookie будут вашим лучшим выбором для скорости и совместимости.