Я думаю, вы могли бы просто использовать sort()
для сортировки массива, предоставляющего compareFunction
. В этом случае вам нужно будет только проверить столбец Seen
or not.
const data = [["M", "Seen", "Movie"],["M", "1/3", "Movie"],["M", "Seen", "Movie"],["M", "", "TV"]];
data.sort((a, b) =>{
if(a[1] != "Seen" && b[1] == "Seen"){
// a comes first
return -1
}
if(a[1] == "Seen" && b[1] != "Seen"){
// b comes first
return 1
}
// mantain current order
return 0
});
console.log(data);
Это даст правильный результат:
\>\>\> Array [Array ["M", "1/3", "Movie"], Array ["M", "", "TV"], Array ["M", "Seen", "Movie"], Array ["M", "Seen", "Movie"]]
После сортировки этого массива вы можете просто выполнить setValues()
, как вы это делали в фрагменте кода.