Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. ;(function() {
  2. /**
  3. * AssociativeArray( { key: value } )
  4. * AssociativeArray( key, value )
  5. * AssociativeArray( [keys], [value] )
  6. **/
  7. function AssociativeArray() {
  8. var args = Array.prototype.slice.call(arguments),
  9. arr = [];
  10. switch (true) {
  11. case args.length == 1 && 'object' == typeof args[0]:
  12. var keys = Object.keys(args[0]),
  13. vals = Object.values(args[0]);
  14. for (var i=0;i<keys.length;i++) if (/num|str/i.test(typeof keys[i])) arr[keys[i]] = vals[i];
  15. arr.length = vals.length; // set array length
  16. break;
  17. case args.length == 2 && /^\[[^\]]*\]$/.test(JSON.stringify(args)): // 2 Strings
  18. arr[args[0]] = args[1];
  19. arr.length = 1; // set array length
  20. break;
  21. case args.length == 2 && /^\[\[[^\]]*\],\[[^\]]*\]\]$/.test(JSON.stringify(args)): // 2 Arrays
  22. var keys = args[0],
  23. vals = args[1];
  24. // add blank values foreach extra key if there are more keys than values
  25. if (keys.length > vals.length) keys.map(function(v, i) { if (i >= vals.length) vals.push(void 0); });
  26. for (var i=0;i<keys.length;i++) if (/num|str/i.test(typeof keys[i])) arr[keys[i]] = vals[i];
  27. // append any left over values to array
  28. if (vals.length > keys.length) vals.map(function(v, i) { if (i >= keys.length) arr.push(v); });
  29. arr.length = vals.length; // set array length
  30. break;
  31. }
  32. return arr
  33. }
  34. window.hasOwnProperty("AssociativeArray") || (window.AssociativeArray = AssociativeArray);
  35. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement