UNPKG

phpjs

Version:

php.js offers community built php functions in javascript

111 lines (98 loc) 3.14 kB
--- layout: page title: "JavaScript array_shift function" comments: true sharing: true footer: true alias: - /functions/view/array_shift:336 - /functions/view/array_shift - /functions/view/336 - /functions/array_shift:336 - /functions/336 --- <!-- Generated by Rakefile:build --> A JavaScript equivalent of PHP's array_shift {% codeblock array/array_shift.js lang:js https://raw.github.com/kvz/phpjs/master/functions/array/array_shift.js raw on github %} function array_shift (inputArr) { // From: http://phpjs.org/functions // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Martijn Wieringa // % note 1: Currently does not handle objects // * example 1: array_shift(['Kevin', 'van', 'Zonneveld']); // * returns 1: 'Kevin' var props = false, shift = undefined, pr = '', allDigits = /^\d$/, int_ct = -1, _checkToUpIndices = function (arr, ct, key) { // Deal with situation, e.g., if encounter index 4 and try to set it to 0, but 0 exists later in loop (need to // increment all subsequent (skipping current key, since we need its value below) until find unused) if (arr[ct] !== undefined) { var tmp = ct; ct += 1; if (ct === key) { ct += 1; } ct = _checkToUpIndices(arr, ct, key); arr[ct] = arr[tmp]; delete arr[tmp]; } return ct; }; if (inputArr.length === 0) { return null; } if (inputArr.length > 0) { return inputArr.shift(); } /* UNFINISHED FOR HANDLING OBJECTS for (pr in inputArr) { if (inputArr.hasOwnProperty(pr)) { props = true; shift = inputArr[pr]; delete inputArr[pr]; break; } } for (pr in inputArr) { if (inputArr.hasOwnProperty(pr)) { if (pr.search(allDigits) !== -1) { int_ct += 1; if (parseInt(pr, 10) === int_ct) { // Key is already numbered ok, so don't need to change key for value continue; } _checkToUpIndices(inputArr, int_ct, pr); arr[int_ct] = arr[pr]; delete arr[pr]; } } } if (!props) { return null; } return shift; */ } {% endcodeblock %} - [Raw function on GitHub](https://github.com/kvz/phpjs/blob/master/functions/array/array_shift.js) Please note that php.js uses JavaScript objects as substitutes for PHP arrays, they are the closest match to this hashtable-like data structure. Please also note that php.js offers community built functions and goes by the [McDonald's Theory](https://medium.com/what-i-learned-building/9216e1c9da7d). We'll put online functions that are far from perfect, in the hopes to spark better contributions. Do you have one? Then please just: - [Edit on GitHub](https://github.com/kvz/phpjs/edit/master/functions/array/array_shift.js) ### Example 1 This code {% codeblock lang:js example %} array_shift(['Kevin', 'van', 'Zonneveld']); {% endcodeblock %} Should return {% codeblock lang:js returns %} 'Kevin' {% endcodeblock %} ### Other PHP functions in the array extension {% render_partial _includes/custom/array.html %}