Searching for objects in JavaScript arrays
javascript:
/* quick fix naive short solution to be posted soon */
/* array of objects with primitive property values only and no wrinkles */
.
javascript:
alert(
JSON.stringify(
[{x:1,y:2},,,{p:"q"},{u:{},vx:[],x:{y:{},x:5}}]
) . match(/"x":/g)
)
et
javascript: /* Does the need to fortify this code imply JSON is stronger? */
alert( /* See wrinkles below */
[{x:1,y:2},,,{p:"q"},{u:{},vx:[],x:{y:{},x:5}}] . toSource() .
/*
match(/({|,)\s*x:/g) . join() . replace(/({|,)\s*x:/g,"x:")
finds `x:,x:,x:`
*/
replace(/(({|,)\s*)([^,{:]*):/g,'$1"$3":') . match(/"x":/g)
)
trouver "x":,"x":,"x":
.
Propriété spécifique trouvée, fait affaire?
Conseil, indice (mais doit être convenablement atténuées et amputées pour les animaux imbriqués):
javascript:
alert(
JSON.stringify([{x:1,y:2},{p:"q"},{u:{},v:[],x:{y:{},x:5}}]) .
match(/"[^"]*":/g)
)
trouve "x":,"y":,"p":,"u":,"v":,"x":,"y":,"x":
(? Toutes les propriétés - Fait maintenant)
Plus (beaucoup plus) la douleur de déformation du cerveau trouvera les valeurs x:
et l'index des positions de tableau (nombre de compteurs de haut niveau ,
).
ampute et atténuer soupçon (ne supprime tableau imbriqué et objet ,
« s, voir les rides):
javascript:debug=false;
animal=[
{x:1,y:2},,,{p:"q"},
[ {u:{},vx:[,,], x:{y:{xx:''},x:5} }, "hmmm comma x colon \" monster" ],
];
animal=animal.toSource().replace(/\[(.*)]/,"$1");
/* */ if(debug){
alert(animal);
animal=animal.replace(/\[([^[\]]*)\]/g,
function(a,b,c,d){alert([a,b,c,d].join("\n\n"));return a});
while(animal.search(/\{.*\}|\[.*\]/)>-1){
animal=animal.replace(/\{([^{}]*)\}|\[(.*)\]/g,
function(a,b,c,d){alert([a,"\n",b,"\n",c]);return b.replace(/,/g,";")});
alert(animal); }
/* */ }
/* the while loops on nesting depth not top array length */
while(animal.search(/\{.*\}|\[.*\]/)>-1)
animal=animal.replace(/\{([^{}]*)\}|\[(.*)\]/g, /* implicit g loop */
function(a,b,c,d){return (b+c).replace(/,/g," ")}); /* ditto */
alert(animal); /* as opposed to a non-lert animal? */
Wrinkles:
.toSource()
est plus forte (mais ... voir ci-dessus) et gère plus de situations que JSON
ref: Implementing Mozilla's toSource() method in Internet Explorer
- et s'il y a des monstres avec des chaînes contenant:
,
's. . . un péché . . . [",,or",,{p:"1,2,3,"}]
{x:...}
ou {"x":...}
. . . un péché . . . ['{"x":...}'," and ","{x:...}",,]
(qui bousiller ci-dessus de codage utilisant JSON
ou toSource
)
- monstres imbriqués
- autres monstruosités ne sont que ... chimèrespas assez payé pour faire ou prouver
Oui, de cette façon, je comprends. Je pensais que s'il y avait des fonctions intégrées pour faire la recherche, comme nous pouvons trier un tableau en fonction de la propriété des objets en utilisant array.sort() et comparer la fonction. – sat
@sat: Pas vraiment. Voici les méthodes disponibles pour Arrays: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array. En JavaScript 1.6, il y a la méthode 'filter()', mais cela serait encore trop complexe pour vos besoins. –
Merci pour l'information. – sat