У меня есть сложный вложенный объект JavaScript со мной. Требование состоит в том, чтобы полностью сгладить объект или только некоторые из его членов.Любая стандартная библиотека JavaScript для преобразования объектов JS
var obj = {
a: {
b: {
c: {
d: "Varun"
},
e: "kumar"
}
}
};
Ожидаемый результирующий объект:
{d: "Varun", e: "kumar"}
Я написал простое преобразование утилита, которая будет принимать карту аксессора в виде { «ABCD»: «D»} и преобразовать объект в новый объект. Пока я не поддерживаю массивы. Кроме того, утилита преобразования может только свести сложный объект к более простой, а не наоборот (т. Е. Построить новый объект-член из простого элемента).
"use strict";
var ObjectUtil = (function() {
// constructor
var cls = function() {
};
// public static
cls.getValueFromAccessor = function (obj, accessor) {
if (obj == null || accessor == null)
return null;
return accessor.split(".").reduce(function(prev, current, index) {
var reducedObject = prev;
if (index == 1)
reducedObject = obj[prev];
if (reducedObject == null)
return null;
return reducedObject[current];
});
};
cls.transform = function(obj, accessorMap, overlay) {
var result;
if (overlay)
result = obj;
else
result = {};
for (var k in accessorMap) {
result[accessorMap[k]] = cls.getValueFromAccessor(obj, k);
}
return result;
};
return cls;
})();
var obj = {
a: {
b: {
c: {
d: "Varun"
},
e: "kumar"
}
}
};
var accessorMap = {
"a.b.c.d": "d",
"a.b.e": "e"
}
ObjectUtil.getValueFromAccessor(obj, "a.b.c.d");
console.log(ObjectUtil.transform(obj, accessorMap, false));
console.log(ObjectUtil.transform(obj, accessorMap, true));
Есть ли стандартный способ преобразования объектов из одной формы в другую. Любые библиотеки доступны для этого?
[Нет такой вещи, как «объект JSON»] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/). Ваша проблема * * ничего * связана с JSON * вообще *. И JavaScript не имеет стандартной библиотеки. –
Да, я это понимаю. Мой плохой для использования их взаимозаменяемо. –
underscore.js - широко используемая библиотека для таких вещей. Выщипывание специальных свойств, сглаживание коллекций, отображение/уменьшение и т. Д. –