Что-то вроде этого может быть тем, что вам нужно?
let cash = 0;
let card = 0;
let account = 0;
for (const row of result.rows) {
switch (row.doc.paymentOption) {
case 'cash':
cash += row.doc.amount;
break;
case 'card':
card += row.doc.amount;
break;
case 'account':
account += row.doc.amount;
break;
default:
// Error
}
}
console.log(`Cash: ${cash}`);
console.log(`Card: ${card}`);
console.log(`Account: ${account}`);
Предполагается, что поле row.doc.amount
всегда содержит действительное числовое значение.
Вы можете использовать его для сортировки всех видов объектов
sort(T[] a, Comparator<? super T> c)
Arrays.sort(a, Collections.reverseOrder());
Arrays.sort ()
не может использоваться напрямую для сортировки примитивных массивов в порядке убывания. Если вы попытаетесь вызвать метод Arrays.sort ()
, передав обратный Comparator, определенный в Collection.reverseOrder ()
, он выдаст ошибку
не найдено подходящего метода для сортировки (int [], компаратор)
Это будет нормально работать с массивом Integer, но не будет работать с массивом int.
Единственный способ отсортировать примитивный массив в порядке убывания: сначала отсортируйте массив в порядке возрастания, а затем переверните массив на место. Это также верно для двумерных примитивных массивов.
Существует большая путаница, продолжающаяся здесь - люди предлагают решения для непримитивных значений, пытаются реализовать некоторые алгоритмы сортировки от земли, дать решения, вовлекающие дополнительные библиотеки, представляя некоторые hacky и т.д. Ответ на исходный вопрос является 50/50. Для тех, кто просто хочет скопировать/вставить:
// our initial int[] array containing primitives
int[] arrOfPrimitives = new int[]{1,2,3,4,5,6};
// we have to convert it into array of Objects, using java's boxing
Integer[] arrOfObjects = new Integer[arrOfPrimitives.length];
for (int i = 0; i < arrOfPrimitives.length; i++)
arrOfObjects[i] = new Integer(arrOfPrimitives[i]);
// now when we have an array of Objects we can use that nice built-in method
Arrays.sort(arrOfObjects, Collections.reverseOrder());
arrOfObjects
{6,5,4,3,2,1}
теперь. Если у Вас есть массив чего-то другого, чем ints - используют соответствие объект вместо Integer
.
Для обсуждений выше, вот легкий пример для сортировки примитивных массивов в порядке убывания.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = { 5, 4, 1, 2, 9, 7, 3, 8, 6, 0 };
Arrays.sort(nums);
// reverse the array, just like dumping the array!
// swap(1st, 1st-last) <= 1st: 0, 1st-last: nums.length - 1
// swap(2nd, 2nd-last) <= 2nd: i++, 2nd-last: j--
// swap(3rd, 3rd-last) <= 3rd: i++, 3rd-last: j--
//
for (int i = 0, j = nums.length - 1, tmp; i < j; i++, j--) {
tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
// dump the array (for Java 4/5/6/7/8/9)
for (int i = 0; i < nums.length; i++) {
System.out.println("nums[" + i + "] = " + nums[i]);
}
}
}
Вывод:
nums[0] = 9
nums[1] = 8
nums[2] = 7
nums[3] = 6
nums[4] = 5
nums[5] = 4
nums[6] = 3
nums[7] = 2
nums[8] = 1
nums[9] = 0
Простой метод отсортировать международное убывание массива:
private static int[] descendingArray(int[] array) {
Arrays.sort(array);
int[] descArray = new int[array.length];
for(int i=0; i<array.length; i++) {
descArray[i] = array[(array.length-1)-i];
}
return descArray;
}
Иначе с Компаратором
import java.util.Arrays;
import java.util.Comparator;
...
Integer[] aInt = {6,2,3,4,1,5,7,8,9,10};
Arrays.sort(aInt, Comparator.reverseOrder() );
Вы можете использовать это:
Arrays.sort(data, Collections.reverseOrder());
Collections.reverseOrder ()
возвращает Comparator
с использованием обратного естественного порядка. Вы можете получить инвертированную версию собственного компаратора, используя Collections.reverseOrder (myComparator)
.