Ściąga - fragmenty kodów JS
Sprawdzanie duplikatów w tablicy
// Sposób 1
function distinct(array) {
const a = [];
for (let i = 0, l = array.length; i < l; i++) {
if (a.indexOf(array[i]) === -1) a.push(array[i]);
}
return a;
}
// Sposób 2
function hasDuplicates(array) {
const valuesSoFar = Object.create(null);
for (let i = 0; i < array.length; i++) {
const value = array[i];
if (value in valuesSoFar) return true;
valuesSoFar[value] = true;
}
return false;
}Usuwanie pustych wartości z tablicy
const newArr = arr.filter(el => !!el);Sprawdzanie duplikatów w obiekcie JSON
const listaGrupBezDuplikatow = listaGrup.filter((thing, index, self) =>
index === self.findIndex(t => JSON.stringify(t) === JSON.stringify(thing))
);Sprawdzanie czy tablica zawiera element
if (tablica.indexOf(element) !== -1) {
return [{ output: "true" }];
} else {
return [{ output: "false" }];
}Wyciąganie danych z timestampa
const dataUrodzenia = context.getFirstParameter("dataUrodzenia");
let data = parseInt(dataUrodzenia);
data = new Date(data);
const rok = data.getFullYear();
const miesiac = data.getMonth() + 1;
const dzien = data.getDate();Pobieranie dzisiejszej daty
const dateNow = new Date();
const today = `${dateNow.getFullYear()}-${(dateNow.getMonth() + 1)
.toString()
.padStart(2, "0")}-${dateNow.getDate().toString().padStart(2, "0")}`; Wyciąganie nazw plików z komponentu UploadFile
const nazwy = JSON.parse(context.getFirstParameter("zalaczniki"));
const gotowaLista = nazwy.toString(); Pobieranie wartości konkretnego atrybutu komponentu
const nazwy = context.getData("@GesUploadFile1", "fileNames");
const rozmiary = context.getData("@GesUploadFile1", "totalFilesSize");Usuwanie spacji
let value = context.getFirstParameter("value");
value = value.replace(/\s+/g, "");Dopasowanie wartości do maski (regex)
const input = context.getFirstParameter("dokumentTozsamosci");
const regex = /^[a-zA-Z]{3}[0-9]{6}$/;
if (!input.match(regex)) {
context.log().info("Niepoprawny numer dowodu osobistego");
} else {
return [];
}Zliczanie wystąpień danej wartości
const input = context.getParameters("input");
let trueOccurences = 0;
for (let i = 0; i < input.size(); i++) {
if (input.get(i) === "true") {
trueOccurences++;
}
} Sprawdzanie ile pełnych lat minęło
let dataUrodzenia = context.getFirstParameter("dataUrodzenia");
if (dataUrodzenia !== "" && dataUrodzenia !== null) {
let data = parseInt(dataUrodzenia);
dataUrodzenia = new Date(data);
dataUrodzenia.setHours(12, 0, 0, 0);
const todayDate = new Date();
todayDate.setHours(12, 0, 0, 0);
const difference = todayDate.getTime() - dataUrodzenia.getTime();
const ageDate = new Date(difference);
if (Math.abs(ageDate.getUTCFullYear() - 1970) >= 18) {
context.log().info("Minęło co najmniej 18 lat");
} else {
context.log().info("Nie minęło 18 lat");
}
} else {
return [];
}Pobieranie danych z sekcji powtarzalnej
const pesel = context.getParameters("pesel").toArray();
const data = context.getParameters("dataUrodzenia").toArray();
let index = 0;
while (index < 30) {
const idObywatelstwo =
"GesComplexComponent2.GesComplexComponent3.GesRepeatableSection2.row" +
index +
".GesComplexComponent2.GesComplexComponent3.GesComplexComponent1.GesCombobox2";
const ob = context.getData(idObywatelstwo, "label");
const idImie =
"GesComplexComponent2.GesComplexComponent3.GesRepeatableSection2.row" +
index +
".GesComplexComponent2.GesComplexComponent3.GesComplexComponent1.GesTextField1";
const im = context.getData(idImie, "value");
const isRowVisible = context.isVisible(
"GesComplexComponent2.GesComplexComponent3.GesRepeatableSection2.row" +
index +
".GesComplexComponent2.GesComplexComponent3.GesComplexComponent1.GesCombobox2"
);
if (isRowVisible && im) {
obywatelstwoList.push(ob);
stanCywilnyList.push(sc);
rodzajDokumentuList.push(rd);
}
index++;
}Wywołanie ServiceProxy
const input = context.getInputParameters();
let result = context.callService("Plus500ZusAdditionalValueServiceProxy", input);
let parsedResult = JSON.parse(result);
result = result.get(0).get("result");
parsedResult = JSON.parse(result);Utworzenie słownika
const items = {
"Dowód osobisty": "DO",
"Paszport polski": "PP",
"Paszport zagraniczny": "PZ",
};
function DictElement(label, value) {
this.label = label;
this.value = value;
}
const dict = [];
for (const item in items) {
dict.push(new DictElement(item, items[item]));
}
return dict;Formatowanie liczb zmiennoprzecinkowych
function format(interest) {
return parseFloat(interest)
.toFixed(2)
.replace(".", ",")
.replace(/(?!^)(?=(?:\d{3})+(?:,|$))/gm, " ");
}Zwracanie dopisku dzień/miesiąc/rok
function formatDate(unit, quantity) {
let literal = "dni";
if (unit === "DAY") {
literal = quantity === 1 ? "dzień" : "dni";
}
if (unit === "MONTH") {
if (quantity === 1) {
literal = "miesiąc";
} else if (
quantity < 5 ||
(quantity > 20 &&
["2", "3", "4"].includes(String(quantity).slice(-1)))
) {
literal = "miesiące";
} else {
literal = "miesięcy";
}
}
if (unit === "YEAR") {
if (quantity === 1) {
literal = "rok";
} else if (
quantity < 5 ||
(quantity > 20 &&
["2", "3", "4"].includes(String(quantity).slice(-1)))
) {
literal = "lata";
} else {
literal = "lat";
}
}
return literal;
}Tworzenie tablicy z listy obiektów
const gotowaListaSchematow = listaSchematowBezDuplikatow.map(
a => a.schemaId
);Filtrowanie tablicy
function callService(context) {
let data = '[{"name":"Jan","lastname":"Kowalski","role":"admin"},{"name":"Adam","lastname":"Pietrzak","role":"user"},{"name":"Karol","lastname":"Kowalski","role":"admin"},{"name":"Joanna","lastname":"Wieczorek","role":"user"}]';
data = JSON.parse(data);
data = data.filter(element => element.role === "user");
return [{ selectedUsersFullListEnd: JSON.stringify(data) }];
}Usuwanie wybranych parametrów obiektu
// Sposób 1
function callService(context) {
let data = '[{"name":"Jan","lastname":"Kowalski","role":"admin"},{"name":"Adam","lastname":"Pietrzak","role":"user"},{"name":"Karol","lastname":"Kowalski","role":"admin"},{"name":"Joanna","lastname":"Wieczorek","role":"user"}]';
data = JSON.parse(data);
data = data.map(element => {
delete element.role;
return element;
});
return [{ selectedUsersFullListEnd: JSON.stringify(data) }];
}
// Sposób 2
function callService(context) {
let data = '[{"name":"Jan","lastname":"Kowalski","role":"admin"},{"name":"Adam","lastname":"Pietrzak","role":"user"},{"name":"Karol","lastname":"Kowalski","role":"admin"},{"name":"Joanna","lastname":"Wieczorek","role":"user"}]';
data = JSON.parse(data);
for (const element of data) {
delete element.role;
}
return [{ selectedUsersFullListEnd: JSON.stringify(data) }];
}Usuwanie duplikatów z tablicy za pomocą Set
Set// Wartości do tablicy
const accountPermissionArr = accountPermissionInput.toArray();
// Set usuwa duplikaty (w JS zachowuje kolejność dodawania elementów)
const accountPermissionSet = new Set(accountPermissionArr);
// Przekształcamy obiekt typu Set z powrotem w tablicę
const accountPermissionFinal = Array.from(accountPermissionSet);
// (opcjonalnie) jeśli chcesz posortować wynik alfabetycznie:
// const accountPermissionFinal = Array.from(accountPermissionSet).sort();Pobieranie wartości za pomocą inputParameters
inputParametersfunction getSingleValue(valuesMap, paramName, defaultValue) {
const values = valuesMap.get(paramName);
if (values != null && !values.isEmpty() && values.get(0) != null) {
if (values.size() > 1) {
throw new Error(paramName + " must have single value");
} else {
return values.get(0);
}
} else {
return defaultValue;
}
}
function getBooleanValue(valuesMap, paramName, defaultValue) {
const value = getSingleValue(valuesMap, paramName, defaultValue);
return value === true || value === "1" || value === "true";
}
// Użycie
const inputParameters = context.getInputParameters();
const onlyVATAccounts = getBooleanValue(inputParameters, "inputOptionalOnlyVATAccounts", false);
const companyNik = getSingleValue(inputParameters, "inputOptionalCompanyNik", null);Stworzenie BigDecimala i przydatne dodatki
const bigDecimalZero = BigDecimal.valueOf("0").bigDecimal;
function createBigDecimal(value, locale) {
if (!value) {
return value;
}
let formatValue;
if (locale === "en") {
formatValue = value.toString().replace(/,/g, "");
} else if (locale === "es") {
formatValue = value.toString().replace(/\./g, "").replace(/,/g, ".");
} else {
// domyślnie: usuń białe znaki i zamień przecinek na kropkę
formatValue = value.toString().replace(/\s+/g, "").replace(",", ".");
}
return BigDecimal.valueOf(formatValue).bigDecimal;
}
function createBigDecimalOrZero(value, locale) {
return !value ? bigDecimalZero : createBigDecimal(value, locale);
}
function createBigDecimalOrNull(value, locale) {
return !value ? null : createBigDecimal(value, locale);
}Formatowanie salda konta
const UNBREAKABLE_SPACE = "\u00A0";
function formatAmount(number, locale) {
const GROUPING_SIZE_OF_BALANCE = 3;
const NUMBER_OF_FRACTION_DIGITS_IN_BALANCE = 2;
const localeSettings = {
en: { groupingSeparator: ",", decimalSeparator: "." },
pl: { groupingSeparator: UNBREAKABLE_SPACE, decimalSeparator: "," },
es: { groupingSeparator: ".", decimalSeparator: "," },
};
// pozwól na 0, odrzuć null/undefined
if (number === null || number === undefined) {
return "";
}
const settings = localeSettings[locale] || localeSettings.pl;
const roundedNumber = Number(number).toFixed(NUMBER_OF_FRACTION_DIGITS_IN_BALANCE);
const parts = roundedNumber.split(".");
let integerPart = parts[0];
const decimalPart = parts[1];
const regex = new RegExp(`\\B(?=(\\d{${GROUPING_SIZE_OF_BALANCE}})+(?!\\d))`, "g");
integerPart = integerPart.replace(regex, settings.groupingSeparator);
return integerPart + settings.decimalSeparator + decimalPart;
}
function getAccountBalanceFormatted(loan, locale) {
return (
formatAmount(loan.availableFunds, locale) +
UNBREAKABLE_SPACE +
loan.currencyCode
);
}
// Zwraca np.: "79 561,00 PLN" (PL) lub "79,561.00 USD" (EN)
function formatAmountNeutral(value) {
const formatNeutral = DecimalFormat.of("0.00", DecimalFormatSymbols.EN);
return value !== null && value !== undefined
? formatNeutral.format(BigDecimal.valueOf(value.toString()))
: "";
}
// Zwraca format neutralny (EN) np.: "79561.00"PreviousMateriały zewnętrzne - JavaScriptNextJęzyk wyrażeń definiowania warunków (warunki z getValue)
Last updated
Was this helpful?
