Javascript 将对象转换为保留数组的索引
我有一个多维对象。我需要将嵌套对象转换为数组,我这样做:Javascript 将对象转换为保留数组的索引,javascript,arrays,angularjs,object,multidimensional-array,Javascript,Arrays,Angularjs,Object,Multidimensional Array,我有一个多维对象。我需要将嵌套对象转换为数组,我这样做: 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(functi
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"]};
试一下:
angular.forEach(foobar, function(value, key) {
if (angular.isObject(value)) {
var arrValue = [];
Object.keys(value).forEach(function(k) { arrValue[k] = value[k]; });
foobar[key] = arrValue;
}
});
我认为最好将
map
替换为each
,两者都可以工作,但使用map
表示您对映射结果感兴趣。因此,在以后的代码复查中可能会出现错误。将map
替换为each
会产生角度错误:TypeError:Object.keys(…)。每个都不是函数。您最初使用map
的方法实现了我所需要的功能。所以我会接受答案。但我没有想到,当我将带有非后续索引的数组插入$location.search(foobar)
以从中生成查询字符串时,它会生成所有应该位于提供的索引之前的数组元素,如未定义的,以添加到我以前的注释中:当我使用$location.search({“foo1”:[3=>'bar1']})
。它返回以下字符串:http://website.com/path?foo1=undefined&foo1=undefined&foo1=bar1
。所以我不得不重新考虑算法。啊,对不起,我把它和承诺混在一起了。每一个