我从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 = {} ,则我在推送功能中没有未定义的错误
答案 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)