Chercher une clé dans un objet JS en mode strict ou include sur différents niveaux de profondeur.
Αυτός ο κώδικας δεν πρέπει να εγκατασταθεί άμεσα. Είναι μια βιβλιοθήκη για άλλους κώδικες που περιλαμβάνεται μέσω της οδηγίας meta // @require https://update.greasyfork.org/scripts/578734/1828936/SearchKey.js
/*
* Skip les valeurs falsy (null, undefined, "", 0, false) et continue la recherche.
*
* @param {Object} target - L'objet dans lequel chercher
* @param {string} searchedKey - Le nom de clé à chercher
* @param {boolean} strictName - true = nom exact, false = includes (défaut: true)
* @param {number} maxDepth - Profondeur de recherche, 1 = niveau courant seulement (défaut: 1)
*
* @example
* searchKey(state, 'search_key_2'); // nom exact, niveau courant
* searchKey(cache, ':_key_', false); // includes, niveau courant
* searchKey(state, ':_key_', false, 20); // includes, recherche profonde
* searchKey(state, 'search_key_2', true, 20); // nom exact, recherche profonde
*/
function searchKey(target, searchedKey, strictName = true, maxDepth = 1) {
if (!target || typeof target !== 'object' || maxDepth <= 0) return null;
// Niveau courant : on cherche une clé qui matche
const matchingKey = Object.keys(target).find(key => (strictName ? key === searchedKey : key.includes(searchedKey)) && target[key]);
if (matchingKey) return target[matchingKey];
// Pas trouvé au niveau courant, on descend si maxDepth le permet
for (const value of Object.values(target)) {
const result = searchKey(value, searchedKey, strictName, maxDepth - 1);
if (result !== null) return result;
}
return null;
}