У меня есть функция, которая принимает объект и превращает его в (слегка) другой. Я сделал первый шаг, чтобы просто заставить его работать, и теперь я хотел бы упростить эту функцию, я чувствую, что могу немного сократить, но могу использовать некоторую помощь в этом.Javascript, упрощающий преобразование объектов
Так объект получает передается в как так
{"module1":{"calender":["yes","no","maybe"]}}
и получает выплюнуть, как так
{module1: "calender,yes,no,maybe"}
Так вот то, что я сейчас:
function(obj) {
for (i in obj) {
for (p in obj[i]) {
var decodeModule = encodeURIComponent(decodeURIComponent(i));
var newObj = {};
var frontOf = encodeURIComponent(p);
var backOf = ""
//needs work
var lastItem = obj[i][p][obj[i][p].length - 1];
for (y in obj[i][p]) {
if (obj[i][p][y] == lastItem) {
//replace "," in last item
backOf += encodeURIComponent(decodeURIComponent(obj[i][p][y]));
} else {
backOf += encodeURIComponent(decodeURIComponent(obj[i][p][y])) + ",";
}
};
newObj[decodeModule] = frontOf + "," + backOf;
}
}
return newObj;
}
Так что я уже знаю, что мне не нужно зацикливать второй цикл (для (p в obj [i])), потому что на этом уровне всегда будет только 1 элемент. Кроме этого, я немного зациклен на том, как очистить этот бит - мне предложили, возможно, проверить .reduce или .map использовать меньше кода? Я также использую подчеркивание в своем коде, если это поможет здесь. ЛЮБИТЕ это, если кто-то может помочь мне сделать это немного более элегантным. Спасибо за прочтение!
ой сладкий ребенок jeebus, это потрясающе !!! ! Спасибо!! –
wow, какой гениальный метод :) – Steph
Любой способ захвата encodeURIComponent (decodeURIComponent parts в этом методе? –