Проверить Matter.js
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.6KB

  1. мир = {
  2. ключники: [],
  3. };
  4. мир.выпрямить = function(obj)
  5. {
  6. // https://stackoverflow.com/a/42121920
  7. var newObj = {};
  8. for (var key in obj)
  9. {
  10. if (typeof obj[key] === 'object' && obj[key] !== null)
  11. {
  12. var temp = мир.выпрямить(obj[key])
  13. for (var key2 in temp)
  14. {
  15. newObj[key + "." + key2] = temp[key2];
  16. }
  17. }
  18. else
  19. {
  20. newObj[key] = obj[key];
  21. }
  22. }
  23. return newObj;
  24. };
  25. мир.разобрать = function(словарь) {
  26. var значения = мир.выпрямить(словарь);
  27. for (var ключ in значения)
  28. {
  29. var значение = значения[ключ];
  30. for (var номер in мир.ключники)
  31. {
  32. мир.ключники[номер](ключ, значение);
  33. }
  34. }
  35. };
  36. /*
  37. мир.выпрямить = function(data) {
  38. var result = {};
  39. function recurse (cur, prop) {
  40. if (Object(cur) !== cur) {
  41. result[prop] = cur;
  42. } else if (Array.isArray(cur)) {
  43. for(var i=0, l=cur.length; i<l; i++)
  44. recurse(cur[i], prop + "[" + i + "]");
  45. if (l == 0)
  46. result[prop] = [];
  47. } else {
  48. var isEmpty = true;
  49. for (var p in cur) {
  50. isEmpty = false;
  51. recurse(cur[p], prop ? prop+"."+p : p);
  52. }
  53. if (isEmpty && prop)
  54. result[prop] = {};
  55. }
  56. }
  57. recurse(data, "");
  58. return result;
  59. };
  60. */