JS如何搞成一个键值对的数组:[2: true, 3: true]

我现在,需要清空比如数组$scope.checkbox=[];
然后,把$scope.datas里面的对象的id放到上面的数组去
最后的形式应该是:[2: true, 3: true]这样的。

    angular.forEach($scope.datas, function (item) {

                    // var temp = {};
                    // temp[item.id] = true;

                    $scope.checkbox.push(item.id+": true");
                    console.log($scope.checkbox);

                });

很明显,我这样做,是弄成了[“2: true”, “3: true”]这样地,如果是,像注释那样弄,又变成了对象[object,object],不符合要求。

如果把item.id 注入到数组中....?

==========================================
已经解决:

angular.forEach($scope.datas, function (item) {

                    $scope.checkbox[item.id]=true;

                });
阅读 3.4k
2 个回答

首先,题主你并不了解json(可能这就是给你-1票的原因),所以才会问出这个问题,建议先花点时间了解一下json结构,参考资料
合法的json结构是没有这种表示方式的(可以上这个网站校验一下json),

你这个需求可以考虑以下json结构:
推荐

{"2":true, "3":false}


一般

[{"id": 2, "value": true}, {"id": 3, "value": false}]


不推荐,需二次处理
["2: true", "3: false"]

最后,说说你的解决方法,看起来是解决了问题,但其实属于一种埋雷行为,例如:
item.id不是连续的,[2, 3, 5, 8, ..., 1909]
最终生成的$scope.checkbox数组就是这样的,[undefined, 2, 3, undefined, 5, undefined, undefined, 8, undefined..., 1909],就是说中间有若干个undefined填充着这个数组,当你要对这个数组进行操作的时候就可能会踩上这个坑了。

这个你必须要搞成你注释那样的,不然真没办法,没有这种结构,欢迎楼下打脸^_^

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏