Как я видел, другие ответы возвращают повторяющиеся значения. Здесь у вас есть решение ( проверено ):
var allOfTheKeys = [], allOfTheArrays = [], nonRepeatedElems = {};
for(var key in obj){
allOfTheKeys.push(key);
for(var i=0; i< obj[key].length; i++)
nonRepeatedElems[obj[key][i]] = true;
}
for(var e in nonRepeatedElems )
allOfTheArrays.push(e);
Если кому-то интересно, что такое nonRepeatedElems
, это хеш-таблица для значений массива, ключ которой - значение элемента массива. Поэтому я не получаю повторяющихся элементов.
Если вы хотите, чтобы ваши значения были упорядочены, просто позвоните allOfTheArrays.sort();
в конце.
РЕДАКТИРОВАТЬ : @float, здесь у вас есть более понятное решение:
var allOfTheKeys = [], allOfTheArrays = [];
for(var key in obj){
allOfTheKeys.push(key);
for(var i=0; i< obj[key].length; i++){
var arrayElem = obj[key][i];
if(!$.inArray(arrayElem, allOfTheArrays)) //Add to the array if it doesn't exist yet
allOfTheArrays.push(arrayElem);
}
}