style description create php javascript list phpjs

php - description - li html



Javascript equivalente a la lista de PHP() (9)

Realmente me gusta esa función.

$matches = array(''12'', ''watt''); list($value, $unit) = $matches;

¿Hay un equivalente de Javascript de eso?


Dado que la mayoría de las implementaciones de JavaScript aún no son compatibles con esa característica, simplemente puede hacerlo de una manera más similar a JavaScript:

function list(){ var args = arguments; return function(array){ var obj = {}; for(i=0; i<args.length; i++){ obj[args[i]] = array[i]; } return obj; }; }

Ejemplo:

var array = [''GET'', ''/users'', ''UserController'']; var obj = {}; obj = list(''method'', ''route'', ''controller'')(array); console.log(obj.method); // "GET" console.log(obj.route); // "/users" console.log(obj.controller); // "UserController"

Mira el violín

Una alternativa es agregar un método de lista a Array.prototype (incluso yo no lo recomendaría):

Array.prototype.list = function(){ var i, obj = {}; for(i=0; i<arguments.length; i++){ obj[arguments[i]] = this[i]; } // if you do this, you pass to the dark side `,:,´ this.props = obj; return obj; };

Ejemplo:

/** * Example 1: use Array.prototype.props */ var array = [''GET'', ''/users'', ''UserController'']; array.list(''method'', ''route'', ''controller''); console.log(array.props.method); // "GET" console.log(array.props.route); // "/users" console.log(array.props.controller); // "UserController" /** * Example 2: use the return value */ var array = [''GET'', ''/users'', ''UserController'']; var props = array.list(''method'', ''route'', ''controller''); console.log(props.method); // "GET" console.log(props.route); // "/users" console.log(props.controller); // "UserController"

Compruebe el violín para ese


ES6 sí lo admite directamente ahora mediante la desestructuración de matrices .

const matches = [''12'', ''watt'']; const [value, unit] = matches;


Esta es mi solución para usar List / Explode en Javascript. Ejemplo de trabajo de violín

Primero la implementación:

var dateMonth = "04/15"; dateMonth.split("/").list("month","day", "year"); month == "04"; day == "15"; year == null;

También permite el alcance de las nuevas variables generadas:

var scoped = (function() { var dateMonth = "07/24/2013"; dateMonth.split("/").list("month","day", "year", this); this.month == "07"; this.day == "24"; this.year == "2013"; })();

Esto se logró modificando un prototipo de Array.

Array.prototype.list = function() { var limit = this.length, orphans = arguments.length - limit, scope = orphans > 0 && typeof(arguments[arguments.length-1]) != "string" ? arguments[arguments.length-1] : window ; while(limit--) scope[arguments[limit]] = this[limit]; if(scope != window) orphans--; if(orphans > 0) { orphans += this.length; while(orphans-- > this.length) scope[arguments[orphans]] = null; } }


Este es mi truco en eso; lo más corto que pude obtener sin escribir una función para hacerlo. Sin embargo, debes tener cuidado con el alcance de "esto":

list = ["a","b","c"]; vals = [1,2,3]; for(var i in vals)this[list[i]]=vals[i]; console.log(a,b,c);

Lo suficientemente bueno para una risa. Todavía asigno cada variable de a una por vez:

a=vals[0]; b=vals[1]; c=vals[2];

Es mucho más corto de esta manera. Además, si tiene un conjunto de variables, probablemente deberían mantenerse en la matriz, o mejor aún deberían ser propiedades de un cierre, en lugar de declararlas todas por separado.



Hay, pero en "nuevas" versiones de Javascript: asignación de desestructuración - Javascript 1.7 . Probablemente solo sea compatible con los navegadores basados ​​en Mozilla, y tal vez en Rhino.

var a = 1; var b = 3; [a, b] = [b, a];

EDITAR: en realidad, no me sorprendería si la biblioteca V8 Javascript (y por lo tanto Chrome) es compatible. Pero no cuentes tampoco :)


prueba esto:

matches = [''12'', ''watt'']; [value, unit] = matches;


CoffeeScript ofrece una tarea de desestructuración con la sintaxis:

[a, b] = someFunctionReturningAnArray()

Esto es más o menos idéntico a la característica ofrecida en las nuevas versiones de JavaScript. Sin embargo, CoffeeScript produce JS compilado que es compatible incluso con el motor JavaScript de IE6, y por lo tanto es una buena opción si la compatibilidad es vital.


function list(fn,array){ if(fn.length && array.length){ for(var i=0;i<array.length;i++){ var applyArray = []; for(var j=0;j<array[i].length;j++){ fn[j] = array[i][j]; applyArray.push(fn[j]); } fn.apply(this,applyArray); } } }

Ejemplo:

//array array mixture for composure var arrayMixture = [ ["coffee","sugar","milk"], ["tea","sugar","honey"] ]; //call our function list(function(treat,addin,addin2){ console.log("I like "+treat+" with " + addin + " and " + addin2); },arrayMixture); //output: //I like coffee with sugar and milk //I like tea with sugar and honey