Für die Validierung werden Validatoren benötigt. Vergessen wir es zum Spaß. Lassen Sie uns mit dem Validator durch die verschachtelte Datenstruktur gehen. Verrückt, sagst du!

Wo werden wir rennen?
Lassen Sie uns das Telefonbuch durchgehen:
const phoneBook = {
andrew: ["+345356245254", "+313232312312"],
vasilina: ["+132313123123"],
serhiy: ["+587234878234", "+321323124123"],
};
Was wollen wir bekommen?
Lassen Sie uns eine Liste aller Zahlen erhalten.
Wie machen wir es?
Wir werden dies in 4 Schritten tun:
- Verbinden wir die Bibliothek zur Datenüberprüfung
- Lassen Sie uns eine regelmäßige Validierungsfunktion erstellen
- Fügen Sie den Nebeneffekt des Sammelns von Zahlen in ein Array ein
- Lassen Sie uns eine Funktion einschließen
Wir werden die Validierungsbibliothek verwenden quartet
:
import { v } from "quartet";
Schreiben wir eine Validierungsfunktion:
const checkPhoneBook = v({
[v.rest]: v.arrayOf(v.string),
});
, :
checkPhoneBook({}); // true
checkPhoneBook({ andrew: ["123321"] }); // true
checkPhoneBook({ andrew: null }); // false
: .
const phoneNumbers = [];
const checkAndCollect = v({
[v.rest]: v.arrayOf(
v.and(
v.string,
v.custom((phoneNumber) => {
phoneNumbers.push(phoneNumber);
return true;
})
)
),
});
:
checkAndCollect({
andrew: ["+345356245254", "+313232312312"],
vasilina: ["+132313123123"],
serhiy: ["+587234878234", "+321323124123"],
});
true
. ! : phoneNumbers
.
console.log(phoneNumbers);
// [
// '+345356245254',
// '+313232312312',
// '+132313123123',
// '+587234878234',
// '+321323124123'
// ]
«»:
import { v } from "quartet";
/**
* @param {Record<string, string[]>} phoneBook
* @returns {string[]} phone numbers
*/
function collectPhoneNumbers(phoneBook) {
const phoneNumbers = [];
const checkAndCollect = v({
[v.rest]: v.arrayOf(
v.and(
v.string,
v.custom((phoneNumber) => {
phoneNumbers.push(phoneNumber);
return true;
})
)
),
});
checkAndCollect(phoneBook);
return phoneNumbers;
}
. production . :
- . — .
- . .
- . .
- Für diese Aufgabe gibt es einen Code, der besser geeignet ist:
/**
* @param {Record<string, string[]>} phoneBook
* @returns {string[]} phone numbers
*/
function collectPhoneNumbers(phoneBook) {
const phoneNumbers = [];
const personNames = Object.keys(phoneBook);
for (const personName of personNames) {
const personPhoneNumbers = phoneBook[personName];
phoneNumbers.push(...personPhoneNumbers);
}
return phoneNumbers;
}
Nachwort
Das ist die Art von Spaß, die ich mir am Sonntagabend ausgedacht habe. Was fällt dir seltsam ein? Schreiben Sie in die Kommentare.