Проверить 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.

66 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 путь = ключ.split(".");
  30. var значение = значения[ключ];
  31. for (var номер in мир.ключники)
  32. {
  33. мир.ключники[номер](ключ, путь, значение);
  34. }
  35. }
  36. };
  37. /*
  38. мир.выпрямить = function(data) {
  39. var result = {};
  40. function recurse (cur, prop) {
  41. if (Object(cur) !== cur) {
  42. result[prop] = cur;
  43. } else if (Array.isArray(cur)) {
  44. for(var i=0, l=cur.length; i<l; i++)
  45. recurse(cur[i], prop + "[" + i + "]");
  46. if (l == 0)
  47. result[prop] = [];
  48. } else {
  49. var isEmpty = true;
  50. for (var p in cur) {
  51. isEmpty = false;
  52. recurse(cur[p], prop ? prop+"."+p : p);
  53. }
  54. if (isEmpty && prop)
  55. result[prop] = {};
  56. }
  57. }
  58. recurse(data, "");
  59. return result;
  60. };
  61. */