T extends [], K extends keyof T
- K
тут что-то производное от number
, потому что ключи(keyof) массива([]) - только цифры.let resultSort: T = arr;
- бессмысленно, так как arr.sort
в любом случае меняет исходный массив.a[propertyName].toLowerCase()
- упадёт если propertyName
будет year
, т.к. Number не имеет метода toLowerCase
.function sortArray<T extends {[key: string]: unknown}, K extends keyof T> (originArr: T[], propertyName: K, cb: (a: T[]) => T[]): T[] {
let arr: T[] = JSON.parse(JSON.stringify(originArr)); //deep copy array
arr.sort((a, b) => {
let nameA = String(a[propertyName]).toLowerCase(),
nameB = String(b[propertyName]).toLowerCase();
if (nameA < nameB)
return -1;
if (nameA > nameB)
return 1;
return 0;
});
return cb(arr);
}
String
, но тогда вместо unknown
надо указать конкретные типы с которыми предполагается работать, и в самой функции сортировки их учесть. Помогите привести доводы почему это надо отрефакторить и убрать ненужные async await.
ожидают ли от меня наниматели быть так же и дизайнером
Если вы Front End или Full Stack разработчик, можете ли вы также и создать макет для приложения?
#[derive(Debug)]
struct CarInfo<'a> {
name: &'a str,
model: &'a str,
}
fn main() {
let input = ["vaz:2107", "gaz:3102"];
let output: Vec<CarInfo> = input
.iter()
.map(|s| s.split_at(s.find(':').expect("Can't find ':'")))
.map(|(name, model)| CarInfo { name, model: &model[1..] })
.collect();
dbg!(output);
}
Compiling playground v0.0.1 (/playground)
Finished dev [unoptimized + debuginfo] target(s) in 1.56s
Running `target/debug/playground`
[src/main.rs:14] output = [
CarInfo {
name: "vaz",
model: "2107",
},
CarInfo {
name: "gaz",
model: "3102",
},
]
console.log('Лол, кек, чебурек');
превратиться в var _0xac52=["\u041B\u043E\u043B\x2C\x20\u043A\u0435\u043A\x2C\x20\u0447\u0435\u0431\u0443\u0440\u0435\u043A","\x6C\x6F\x67"];console[_0xac52[1]](_0xac52[0])
. Оно вам надо? ИМХО всё это детский сад.