Я пытаюсь отсортировать некоторые XML-файлы в разные массивы, и я немного застрял в том, как это сделать.
Вот XML: http://pastebin.ca/1754892
Я использую это выражение xpath для получения каждого элемента "series", который содержит хотя бы один дочерний узел "item".
var ceerez = theXML.evaluate( '//series[item]' ,theXML, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
затем я перебираю результат и помещаю элементы в обычный массив:
var newArr=[];
for (var m = 0; m < ceerez.snapshotLength; m++){
newArr.push(ceerez.snapshotItem(m));
}
поэтому я хотел бы сделать следующее: отобразить и отсортировать элементы в массиве newArr в новые массивы для каждой отдельной сортировки.
Я хочу иметь один массив, который численно сортируется по атрибуту "pub" (как числа) для каждого элемента серии.
Один массив, отсортированный в алфавитном порядке для текста каждого дочернего элемента title.
Один массив, отсортированный по дате для каждого дочернего элемента «item».
Я знаю, как сделать это с помощью метода sort (), но я не могу понять, как это сделать из метода map (), чтобы я мог превратить его в новый массив.
var a2z1 = newArr.map(function(item){
item
.sort(function(a,b) {
return a.firstElementChild.textContent.toLowerCase().replace(/[^a-z,0-9]/gm, '') < b.firstElementChild.textContent.toLowerCase().replace(/[^a-z,0-9]/gm, '') ? -1 : 1;
});
);
(a.firstElementChild) будет элементом title.