Javascript循环+;对象问题:如何使用循环获取对象中的必需项

Javascript循环+;对象问题:如何使用循环获取对象中的必需项,javascript,object,for-loop,Javascript,Object,For Loop,我在循环和对象方面遇到了一些问题 我有过这样的经历 var jsonPermission = {"permissions": [ {"permissionId": 1, "permissionName": "Admin Permission", "roleDesc": "This is an Admin Permission"}, {"permissionId": 2, "permis

我在循环和对象方面遇到了一些问题

我有过这样的经历

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"] }
]
我必须把物体做成这样

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);
}
如何执行?

如何执行:

obj_permissions["type"] = [ permission_type[0] ];
而不是:

obj_permissions["type"] = permission_type;
看到区别了吗?您正在使用阵列

[编辑:实际上没有太大区别,但这仍然澄清了问题。请参见评论。]

如何:

obj_permissions["type"] = [ permission_type[0] ];
而不是:

obj_permissions["type"] = permission_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
    });
}
var source=jsonPermission.permissions;
var arr_permissions=[];

对于(var i=0;i由于
permission\u 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
    });
}
var source=jsonPermission.permissions;
var arr_permissions=[];

对于(var i=0;i我认为这是您用于评估结果的工具的问题,如果您使用firefox console.log()将结果记录到console,它将提供您所显示的结果。但是如果您在代码中正确检查使用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)
}
var permissions\u len=jsonPermission.permissions.length;
var arr_permissions=[];
var permission_type=[“permission”];

对于(var i=0;i我认为这是您用于评估结果的工具的问题,如果您使用firefox console.log()将结果记录到console,它将提供您所显示的结果。但是如果您在代码中正确检查使用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)
}
var permissions\u len=jsonPermission.permissions.length;
var arr_permissions=[];
var permission_type=[“permission”];

对于(var i=0;我只是作为一个注释,因为我无法在代码中发现一个明显的错误:您将同一个数组对象分配给所有
类型
-定义。因此,如果您更改此数组,例如,通过添加元素,此更改将影响所有
类型
属性。我认为最好为每个ent创建一个单独的数组Y.正如我不能在代码中发现一个明显错误一样,请注意:您将同一个数组对象分配给所有
类型
-定义。因此,如果您更改此数组,例如通过添加元素,此更改将影响所有
类型
属性。我认为最好为每个条目创建一个单独的数组。我建议您正如你所建议的那样,这个问题仍然是一样的。嗯……我对此有点困惑。如果我这样做的话,
var-ray=[“好的”];var-obj={“x”=[ray[0]};console.log(obj)
我得到了
{x:['ok']}
。老实说,我对你的版本也得到了同样的结果……也许你的问题出在别的地方了?[啊:显然是这样——firefox控制台;我用
node
命令行解释器进行了测试,你应该得到一个;)]我按照你的建议使用,但问题仍然完全一样。嗯……我对此有点困惑。如果我使用
var-ray=[“好”];var-obj={“x”=[ray[0]};console.log(obj)
我得到
{x:[“好”]
。老实说,我对你的版本也有同样的看法……也许你的问题出在其他地方了?[啊:显然是这样——firefox控制台;我用
节点测试了
命令行解释器,你应该得到一个;)]谢谢。你对firefox控制台的看法是正确的。你的解决方案显示了精确的值。谢谢。你对firefox控制台的看法是正确的。你的解决方案显示了精确的值。