Исключение конкретного объекта массива перед сортировкой в ​​JavaScript

NSLog принимает в качестве первого аргумента строку формата format, , за которой следует список аргументов, которые заменяются заполнителями в строке формата (сравните String Format Specifiers ).

На платформах Apple вы можете распечатать String с использованием формата %@:

let fileName = "the file"
NSLog("File not found: %@", fileName)

Однако это не работает на платформах Linux ( таких как пар). Здесь вам нужно преобразовать строку Swift в строку C, чтобы передать ее как аргумент NSLog (и использовать формат %s для строк C):

let fileName = "the file"
fileName.withCString {
    NSLog("File not found: %s", $0)
}

1
задан sowmiya 25 March 2019 в 04:35
поделиться

2 ответа

Вы можете сначала отфильтровать myList в два списка в зависимости от того, имеет ли каждый элемент свойство amount:

const includesAmount = myList.filter(item => item.hasOwnProperty('amount'));
const excludesAmount = myList.filter(item => !item.hasOwnProperty('amount'));
includesAmount.sort(...)

const finalArray = [...includesAmount, ...excludesAmount];

Это делает два прохода через myList, но вы можете сделать это за один пройти итерацией по myList и перенести каждый элемент в соответствующий массив.

0
ответ дан miyu 25 March 2019 в 04:35
поделиться

Я не уверен, почему вышеупомянутые ответы должны использовать hasOwnProperty().

Просто короче и удобочитаемее просто проверить, существует ли это свойство:

sortAndFilterProviders() {
  const noAmountList = myList(item => !item['amount']);
  const amountList = myList(item => item['amount']);

  amountList.sort( (a, b) => {
    const a1 = a.amount, 
    b1 = b.amount;
    if (a1 == b1) {
      return 0;
    };
    return a1 > b1 ? 1 : -1;
   });

   console.log(amountList); // check if it is sorted
   return [... noAmountList, amountList];
 }
0
ответ дан 25 March 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: