Intereting Posts
POST FormData для php с использованием javascript и XMLHTTPRequest MySQL: что лучше всего использовать, Unix TimeStamp или DATETIME отправлять несколько форм с одинаковым именем одним щелчком мыши Jquery php, если последний символ является «/», если нет, Отправить форму без страницы как использовать платформу twitter bootstrap в приложении zend framework 1? API PHP Instagram – как получить MIN_TAG_ID и MAX_TAG_ID URL-адрес в качестве параметров URL-адреса – проблема с «&» URL-адрес redirect_uri должен быть абсолютным входом в Facebook PHP SDK Каковы различия между «php artisan dump-autoload» и «компоновщик-автозагрузка», Есть ли возможность использовать услугу Audio chat из Google в мой веб-приложение? Преобразование простых текстовых URL в гиперссылки HTML в PHP Отправка пользовательского HTTP-запроса с помощью PHP В то время как / foreach Loops возвращают четыре из той же строки Обработка задержек при извлечении файлов с удаленного сервера в PHP

Javascript эквивалент списка PHP ()

Очень нравится эта функция.

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

Есть ли эквивалент Javascript?

    Существует, но в «новых» версиях Javascript: Destructuring assign – Javascript 1.7 . Вероятно, это поддерживается только в браузерах Mozilla и, возможно, в Rhino.

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

    EDIT: на самом деле это меня не удивит, если это поддерживает библиотека Javascript V8 (и, таким образом, Chrome). Но не рассчитывайте на это либо 🙂

    попробуй это:

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

    ES6 поддерживает это прямо сейчас через деструкцию массива .

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

    Это мое решение для использования List / Explode на Javascript. Рабочий пример скрипта

    Сначала реализация:

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

    Он также позволяет определять новые сгенерированные переменные:

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

    Это было выполнено путем модификации прототипа 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; } } 

    Существует экспериментальная реализация list() PHPJS здесь:
    https://github.com/kvz/phpjs/blob/master/_experimental/array/list.js

    CoffeeScript предлагает деструктивное назначение с синтаксисом:

     [a, b] = someFunctionReturningAnArray() 

    Это в значительной степени идентично функции, предлагаемой в очень новых версиях JavaScript. Однако CoffeeScript создает скомпилированную JS, которая совместима даже с движком JavaScript IE6, и поэтому это хороший вариант, если совместимость жизненно важна.

    Поскольку большинство реализаций JavaScript еще не поддерживают эту функцию, вы можете просто сделать это более похожим на 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; }; } 

    Пример:

     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" 

    Проверьте скрипку


    Альтернативой является добавление метода list в метод Array.prototype (даже я бы не рекомендовал его):

     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; }; 

    Пример:

     /** * 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" 

    Проверьте скрипт для этого

    Это мой взломать его; как можно короче, если не написать функцию, чтобы сделать это. Должен быть осторожен в области «этого», хотя:

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

    Достаточно хорошо для смеха. Я по-прежнему назначаю каждую переменную по одному за раз:

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

    Это намного короче. Кроме того, если у вас есть куча переменных, они, вероятно, должны храниться в массиве, или даже лучше они должны быть свойствами закрытия, а не объявлять их отдельно.

     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); } } } 

    Пример:

     //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