J'essaie d'accéder à une propriété d'un objet en utilisant un nom dynamique. Est-ce possible ?
const something = { bar: "Foobar!" };
const foo = 'bar';
something.foo; // The idea is to access something.bar, getting "Foobar!"
J'essaie d'accéder à une propriété d'un objet en utilisant un nom dynamique. Est-ce possible ?
const something = { bar: "Foobar!" };
const foo = 'bar';
something.foo; // The idea is to access something.bar, getting "Foobar!"
D'autres ont déjà mentionné les syntaxes "point" et "carré", je souhaite donc couvrir l'accès aux fonctions et l'envoi de paramètres d'une manière similaire.
Code jsfiddle
var obj = {method:function(p1,p2,p3){console.log("method:",arguments)}}
var str = "method('p1', 'p2', 'p3');"
var match = str.match(/^\s*(\S+)\((.*)\);\s*$/);
var func = match[1]
var parameters = match[2].split(',');
for(var i = 0; i < parameters.length; ++i) {
// clean up param begninning
parameters[i] = parameters[i].replace(/^\s*['"]?/,'');
// clean up param end
parameters[i] = parameters[i].replace(/['"]?\s*$/,'');
}
obj[func](parameters); // sends parameters as array
obj[func].apply(this, parameters); // sends parameters as individual values
Ce simple morceau de code peut vérifier l'existence de variables/valeurs profondément imbriquées sans avoir à vérifier chaque variable en cours de route...
var getValue = function( s, context ){
return Function.call( context || null, 'return ' + s )();
}
Ex. - un tableau d'objets profondément imbriqués :
a = [
{
b : [
{
a : 1,
b : [
{
c : 1,
d : 2 // we want to check for this
}
]
}
]
}
]
Au lieu de :
if(a && a[0] && a[0].b && a[0].b[0] && a[0].b[0].b && a[0].b[0].b[0] && a[0].b[0].b[0].d && a[0].b[0].b[0].d == 2 ) // true
Nous pouvons maintenant :
if( getValue('a[0].b[0].b[0].d') == 2 ) // true
Santé !
const objA = {
key1: "value 1",
key2: "value 2",
}
//objA.key1
//objA[‘key1’]
//const s = “key1”;
console.log(objA['key1']);
Nous pouvons créer des propriétés en Javascript en définissant des variables dans un objet littéral. Nous pouvons accéder aux propriétés de notre objet de plusieurs façons, comme par exemple :
Démo objet exemple
let obj = {
name: {
first_name: "Bugs",
last_name: "Founder",
role: "Programmer"
}
}
clé en forme de chaîne de points permettant d'obtenir la valeur de
let key = "name.first_name"
Fonction
const getValueByDottedKeys = (obj, strKey)=>{
let keys = strKey.split(".")
let value = obj[keys[0]];
for(let i=1;i<keys.length;i++){
value = value[keys[i]]
}
return value
}
Appel de la fonction getValueByDottedKeys
value = getValueByDottedKeys(obj, key)
console.log(value)
sortie
Bugs
const getValueByDottedKeys = (obj, strKey)=>{
let keys = strKey.split(".")
let value = obj[keys[0]];
for(let i=1;i<keys.length;i++){
value = value[keys[i]]
}
return value
}
let obj = {
name: {
first_name: "Bugs",
last_name: "Founder",
role: "Programmer"
}
}
let key = "name.first_name"
value = getValueByDottedKeys(obj, key)
console.log(value)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
Voir aussi accès à la propriété : notation par points ou crochets ? y Comment ajouter une propriété à un objet en utilisant une variable comme nom ?