Или вы можете использовать рекурсию. Эта программа имеет явное преимущество в том, что ей не нужно находить элемент (или индекс) перед началом вычисления -
const data =
[ { label: "data", value: "data" }
, { label: "data", value: "data" }
, { label: "Others", value: "Others" }
, { label: "data", value: "data" }
]
const transform = ([ a, ...rest ]) =>
a === undefined
? []
: a.label === "Others"
? [ ...transform (rest), a ]
: [ a, ...transform (rest) ]
console .log (transform(data))
// [ { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "Others", value: "Others" }
// ]
Очевидно, что вы, вероятно, должны сделать "Others"
параметром функции -
const data =
[ { label: "data", value: "data" }
, { label: "data", value: "data" }
, { label: "Others", value: "Others" }
, { label: "data", value: "data" }
]
const transform = (query, [ a, ...rest ]) =>
a === undefined
? []
: a.label === query
? [ ...transform (query, rest), a ]
: [ a, ...transform (query, rest) ]
console .log (transform ("Others", data))
// [ { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "Others", value: "Others" }
// ]
console .log (transform ("data", data))
// [ { label: "Others", value: "Others" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// , { label: "data", value: "data" }
// ]
Обратите внимание, что исходный ввод не мутировал. Если найдено несколько меток, соответствующих запросу, все из них будут перемещены в конец массива.
Вы могли всегда добавлять ссылку на Microsoft. VisualBasic и затем используют те же самые методы: Строки. Chr и Strings. Asc.
Это - самый легкий способ получить ту же самую функциональность.
Для Asc()
можно бросить char
к int
как это:
int i = (int)your_char;
и для Chr()
можно вспомнить a char
от int
как это:
char c = (char)your_int;
Вот небольшая программа, которая демонстрирует всю вещь:
using System;
class Program
{
static void Main()
{
char c = 'A';
int i = 65;
// both print "True"
Console.WriteLine(i == (int)c);
Console.WriteLine(c == (char)i);
}
}
Для Chr () можно использовать:
char chr = (char)you_char_value;
Учитывая символ c и интервал i, и функции fi (интервал) и ФК (символ):
От символа до интервала (аналог VB Asc ()): явно снимите символ в качестве интервала: int i = (int)c;
или неявно бросок (продвигает): fi(char c) {i+= c;}
От интервала до символа (аналог VB Chr ()):
явно снимите интервал в качестве символа: char c = (char)i, fc(int i) {(char)i};
Неявный бросок запрещен, поскольку интервал более широк (имеет больший диапазон значений), чем символ