Я пытаюсь сортировать массив с массивом строк в нем. Это похоже на эту проблему (Sort an array with arrays in it by string), но я не был уверен, как это реализовать. Мой массив следующим образомСортировка массива массивов со строками в нем
var myArray = [
['blala', 'alfred', '...'],
['jfkdj', 'berta', '...'],
['vkvkv', 'zimmermann', '...'],
['cdefe', 'albert', '...'],
];
Я пытаюсь отсортировать его в алфавитном порядке (не чувствительно к регистру) по имени или второго аргумента для внутренних массивов. После этого я хочу сортировать по первому аргументу, если есть два элемента с тем же вторым аргументом. Я попытался использовать следующее, но не увенчался успехом и не понял почему. Может ли кто-нибудь посоветовать:
function Comparator(a,b){
if (a[1] < b[1]) return -1;
if (a[1] > b[1]) return 1;
return 0;
}
var myArray = [
['blala', 'alfred', '...'],
['jfkdj', 'berta', '...'],
['vkvkv', 'zimmermann', '...'],
['cdefe', 'albert', '...'],
];
myArray = myArray.sort(Comparator);
Чтобы отсортировать первый аргумент после второго аргумента, я сделаю это?
function Comparator(a,b){
if (a[1] < b[1]){
if (a[2] < b[2]) return -1
if (a[2] > b[2]) return 1;
}
return -1;
}
if (a[1] > b[1]) return 1;{
if (a[2] < b[2]) return -1
if (a[2] > b[2]) return 1;
}
return 1;
}
return 0;
}
var myArray = [
['blala', 'alfred', '...'],
['jfkdj', 'berta', '...'],
['vkvkv', 'zimmermann', '...'],
['cdefe', 'albert', '...'],
];
myArray = myArray.sort(Comparator);
У вас есть дополнительный ')' - попробуйте 'если (а [1] <б [1]) вернет -1,' ' –
, если (а [1] undefined
@ Vohuman довольно уверен, что он хочет, чтобы кто-то объяснил код, а не почему его опечатка неверна. – Blob