UNPKG

phpjs

Version:

php.js offers community built php functions in javascript

124 lines (109 loc) 3.4 kB
--- layout: page title: "JavaScript array_merge function" comments: true sharing: true footer: true alias: - /functions/view/array_merge:326 - /functions/view/array_merge - /functions/view/326 - /functions/array_merge:326 - /functions/326 --- <!-- Generated by Rakefile:build --> A JavaScript equivalent of PHP's array_merge {% codeblock array/array_merge.js lang:js https://raw.github.com/kvz/phpjs/master/functions/array/array_merge.js raw on github %} function array_merge () { // From: http://phpjs.org/functions // + original by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Nate // + input by: josh // + bugfixed by: Brett Zamir (http://brett-zamir.me) // * example 1: arr1 = {"color": "red", 0: 2, 1: 4} // * example 1: arr2 = {0: "a", 1: "b", "color": "green", "shape": "trapezoid", 2: 4} // * example 1: array_merge(arr1, arr2) // * returns 1: {"color": "green", 0: 2, 1: 4, 2: "a", 3: "b", "shape": "trapezoid", 4: 4} // * example 2: arr1 = [] // * example 2: arr2 = {1: "data"} // * example 2: array_merge(arr1, arr2) // * returns 2: {0: "data"} var args = Array.prototype.slice.call(arguments), argl = args.length, arg, retObj = {}, k = '', argil = 0, j = 0, i = 0, ct = 0, toStr = Object.prototype.toString, retArr = true; for (i = 0; i < argl; i++) { if (toStr.call(args[i]) !== '[object Array]') { retArr = false; break; } } if (retArr) { retArr = []; for (i = 0; i < argl; i++) { retArr = retArr.concat(args[i]); } return retArr; } for (i = 0, ct = 0; i < argl; i++) { arg = args[i]; if (toStr.call(arg) === '[object Array]') { for (j = 0, argil = arg.length; j < argil; j++) { retObj[ct++] = arg[j]; } } else { for (k in arg) { if (arg.hasOwnProperty(k)) { if (parseInt(k, 10) + '' === k) { retObj[ct++] = arg[k]; } else { retObj[k] = arg[k]; } } } } } return retObj; } {% endcodeblock %} - [Raw function on GitHub](https://github.com/kvz/phpjs/blob/master/functions/array/array_merge.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_merge.js) ### Example 1 This code {% codeblock lang:js example %} arr1 = {"color": "red", 0: 2, 1: 4} arr2 = {0: "a", 1: "b", "color": "green", "shape": "trapezoid", 2: 4} array_merge(arr1, arr2) {% endcodeblock %} Should return {% codeblock lang:js returns %} {"color": "green", 0: 2, 1: 4, 2: "a", 3: "b", "shape": "trapezoid", 4: 4} {% endcodeblock %} ### Example 2 This code {% codeblock lang:js example %} arr1 = [] arr2 = {1: "data"} array_merge(arr1, arr2) {% endcodeblock %} Should return {% codeblock lang:js returns %} {0: "data"} {% endcodeblock %} ### Other PHP functions in the array extension {% render_partial _includes/custom/array.html %}