1
У меня есть многомерный объект. Вложенности объект нужно преобразовать в массив, я делаю это так:Преобразование объекта в индекс сохранения массива
var foobar = {"foo1": { "5": "bar1", "8": "bar2" }, "foo2": { "3": "bar8", "5": "bar9" }};
angular.forEach(foobar, function(value, key) {
if (angular.isObject(value)) {
var arr = Object.keys(value).map(function(k) { return value[k]; });
foobar[key] = arr;
}
});
console.log(foobar);
{"foo1": ["bar1", "bar2"], "foo2": ["bar8", "bar9"]};
Как преобразовать объект в массив с сохранением индекса, чтобы сделать его выйти так:
{"foo1": [5 => "bar1", 8 => "bar2"], "foo2": [3 => "bar8", 5 => "bar9"]};
IMHO было бы лучше заменить 'map' на' each', оба будут работать, но использование 'map' указывает на то, что вас интересует результат. Таким образом, это может выглядеть как ошибка в более позднем обзоре кода. –
, заменяя 'map' на' each', выдает ошибку в угловом выражении: 'TypeError: Object.keys (...). Каждый не является функцией'. Ваш оригинальный метод с использованием 'map' выполняет то, что мне нужно. Поэтому я приму ответ. Но я не предполагал, что когда я вставляю массив с неизменным индексом в '$ location.search (foobar)', чтобы сделать из него строку запроса, он создает все элементы массива, которые должны были быть до предоставленного индекса как ' undefined' – qwaz
Чтобы добавить к моему предыдущему комментарию: когда я использую '$ location.search ({" foo1 ": [3 => 'bar1']})'. он возвращает следующую строку: 'http: //website.com/path? foo1 = undefined & foo1 = undefined & foo1 = bar1'. Поэтому я должен пересмотреть алгоритм. – qwaz