如何在数组对象中用{}更改[]

时间:2018-10-10 00:06:36

标签: arrays angularjs

我从API检索此数据

{"city":"New York","type":["0","1","9"]}

我需要这样转换:

{"type":{0:true,1:true,9:true},...}

我用这种方式尝试有角度的foreach

var tmparr = [];
angular.forEach( $scope.path.type, function (value, key)  {
    tmparr.push(value + ":true")
});
$scope.checkfilters.type = tmparr

但是以这种方式我得到了这个结果,这不是我所需要的

{"business_type":["0:true","1:true","9:true"]} 

我不知道如何用数组中的{}替换[]。

如果我尝试设置 var tmparr = {} ,则我在推送功能中没有未定义的错误

3 个答案:

答案 0 :(得分:1)

使用括号语法

var tmparr = {};
angular.forEach( $scope.path.type, function (value, key)  {
    tmparr[value] = true;
});
$scope.checkfilters.type = tmparr;

答案 1 :(得分:0)

您可以遍历类型,然后复制值并将其分配为true。

var original = {"city":"New York","type":["0","1","9"]};
var copy = {};
for(var i in original.type){
   copy[original.type[i]] = true;
}

console.log(copy);

答案 2 :(得分:0)

您还可以将reduce与对象累加器一起使用:

var data = {"city":"New York","type":["0","1","9"]}

const result = data.type.reduce((r,c) => (r[c] = true, r), {})

console.log(result)