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)
}
Вы можете сначала отфильтровать 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
и перенести каждый элемент в соответствующий массив.
Я не уверен, почему вышеупомянутые ответы должны использовать 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];
}