[英]How to get the last item in a javascript-value object with a for loop?
[英]Javascript loop + Object Issue: How to get required item in object with loop
我在循环,对象方面遇到了一些麻烦
我有这样的json;
var jsonPermission = {"permissions": [
{"permissionId": 1, "permissionName": "Admin Permission", "roleDesc": "This is an Admin Permission"},
{"permissionId": 2, "permissionName": "Manager Permission", "roleDesc": "This is a Manager Permission"},
{"permissionId": 3, "permissionName": "User Permission", "roleDesc": "This is a user Permission"}
]
};
我必须做这样的对象;
[
{ data: "Admin Permission", type: ["permission"] },
{ data: "Manager Permission", type: ["permission"] },
{ data: "User Permission", type: ["permission"] }
]
所以我用下面的代码;
//For Permissions
var permissions_len = jsonPermission.permissions.length;
var arr_permissions = [];
var permission_type = ["permission"];
for(var i=0;i<permissions_len;i++){
var obj_permissions = {};
obj_permissions["data"] = jsonPermission.permissions[i].permissionName;
obj_permissions["type"] = permission_type;
arr_permissions.push(obj_permissions);
}
但是我却变得像这样:
[
{ data: "Admin Permission", type: [1] },
{ data: "Manager Permission", type: [1] },
{ data: "User Permission", type: [1] }
]
表现如何?
我认为这是您用来评估结果的工具的问题,如果您使用firefox console.log()将结果记录到控制台,它将如您所示显示结果。 但是,如果您在代码中使用for循环正确检查了该值,则可以发现这些值是正确的。
检查如下所示的值
var permissions_len = jsonPermission.permissions.length;
var arr_permissions = [];
var permission_type = ["permission"];
for(var i=0;i<permissions_len;i++){
var obj_permissions = {};
obj_permissions["data"] = jsonPermission.permissions[i].permissionName;
obj_permissions["type"] = permission_type;
arr_permissions.push(obj_permissions);
}
for(var i=0;i<permissions_len;i++){
var a = arr_permissions[i];
console.log(a.data, a.type)
}
您可以在这里进行测试。
怎么样:
obj_permissions["type"] = [ permission_type[0] ];
代替:
obj_permissions["type"] = permission_type;
看到不同? 您正在使用数组。
[编辑:实际上并没有太大的区别,但这仍然可以澄清。 看评论。]
由于permission_type
是一种数组文字,因此最终数组项的type
属性最终将是一个元素的数组。 如果您不打算这样做,请删除数组符号。
例如:
var source = jsonPermission.permissions;
var arr_permissions = [];
for(var i=0;i<source.length;i++){
arr_permissions.push({
data: source[i].permissionName,
type: ["permission"] // or type: "permission" if you didn't want an array
});
}
此版本的代码已进行了简化,但也有一个非常重要的区别:每个项目的type
不再是同一对象 ,因此您不能一次更改所有项目(有意或无意地更改)发生在您不期望的时候)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.