Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组中的这些项移动到数组中的对象中?_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript 如何将数组中的这些项移动到数组中的对象中?

Javascript 如何将数组中的这些项移动到数组中的对象中?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个数组,它在冒号的左侧包含级别的名称,而在右侧,它很难完成级别 我希望能够将其放入数组中的对象中,以便稍后当我需要检查哪些级别已完成困难时,可以转到数组中的每个对象进行检查 以下是我目前拥有的阵列: var levels = [ "Level 1 : Easy", "Level 1 : Normal", "Level 1 : Hard", "Level 2 : Easy", "Level 2 : Normal",

我有一个数组,它在冒号的左侧包含级别的名称,而在右侧,它很难完成级别

我希望能够将其放入数组中的对象中,以便稍后当我需要检查哪些级别已完成困难时,可以转到数组中的每个对象进行检查

以下是我目前拥有的阵列:

   var levels = [
      "Level 1 : Easy", 
      "Level 1 : Normal", 
      "Level 1 : Hard", 
      "Level 2 : Easy", 
      "Level 2 : Normal", 
      "Level 3 : Easy", 
      "Level 3 : Hard"];
如何将其放入数组中的对象中,使其如下所示:

var levelCompletion = [
            {
                name: "Level 1",
                easy: true,
                normal: true,
                hard: true
            },
            {
                name: "Level 2",
                easy: true,
                normal: true,
                hard: false
            },
            {
                name: "Level 3",
                easy: true,
                normal: false,
                hard: true
            }
];
var levelCompletion = {
 "Level 1": {

                easy: true,
                normal: true,
                hard: true
            },
 "Level 2": {
                easy: true,
                normal: true,
                hard: false
            }
}
请注意,“levelCompletion”数组已经存在于我的项目中,但是所有难度值都设置为false,因为我无法理解如何将“levels”数组中的值正确地放入“levelCompletion”数组中


非常感谢

您可以从现有的
levelCompletion
生成一个哈希表,并将其用于
级别的迭代

在内部,将给定字符串拆分为名称和属性值,检查哈希是否不存在,然后生成具有默认属性的新条目,设置为
false
。然后将给定属性设置为
true

var级别=[“1级:简单”、“1级:正常”、“1级:困难”、“2级:简单”、“2级:正常”、“3级:简单”、“3级:困难”],
levelCompletion=[],
hash=Object.create(null);
levelCompletion.forEach(函数(o){
散列[o.name]=o;
});
级别。forEach(功能(a){
var parts=a.split(“:”);
如果(!散列[parts[0]]){
散列[parts[0]]={name:parts[0]};
forEach(函数(k){hash[parts[0]][k]=false;});
levelCompletion.push(散列[parts[0]]);
}
散列[parts[0]][parts[1].toLowerCase()]=true;
});
控制台日志(levelCompletion)

。作为控制台包装{max height:100%!important;top:0;}
您可以从现有的
levelCompletion
生成一个哈希表,并将其用于
级别的迭代

在内部,将给定字符串拆分为名称和属性值,检查哈希是否不存在,然后生成具有默认属性的新条目,设置为
false
。然后将给定属性设置为
true

var级别=[“1级:简单”、“1级:正常”、“1级:困难”、“2级:简单”、“2级:正常”、“3级:简单”、“3级:困难”],
levelCompletion=[],
hash=Object.create(null);
levelCompletion.forEach(函数(o){
散列[o.name]=o;
});
级别。forEach(功能(a){
var parts=a.split(“:”);
如果(!散列[parts[0]]){
散列[parts[0]]={name:parts[0]};
forEach(函数(k){hash[parts[0]][k]=false;});
levelCompletion.push(散列[parts[0]]);
}
散列[parts[0]][parts[1].toLowerCase()]=true;
});
控制台日志(levelCompletion)

。作为控制台包装{max height:100%!important;top:0;}
首先,遍历数组中的每个级别。然后,用冒号将其拆分为一个列表。将级别名称和难度放入字典中

for level in levels:
    sublist=level.split(":")
    levelCompletion[sublist[0]]=[sublist[1]]
字典的键是“sublist”中的第一个元素,值是第二个元素。对不起,我不做Javascript,我做python,但我希望这能给你一个大概的想法。我也是个新手,所以是的。最后,这并不是说真值和假值只是难度级别本身,你需要使用几个if语句。比如:

if sublist[1]="easy":
    levelCompletion[sublist[0]]="easy: " True

首先,遍历数组中的每个级别。然后,用冒号将其拆分为一个列表。将级别名称和难度放入字典中

for level in levels:
    sublist=level.split(":")
    levelCompletion[sublist[0]]=[sublist[1]]
字典的键是“sublist”中的第一个元素,值是第二个元素。对不起,我不做Javascript,我做python,但我希望这能给你一个大概的想法。我也是个新手,所以是的。最后,这并不是说真值和假值只是难度级别本身,你需要使用几个if语句。比如:

if sublist[1]="easy":
    levelCompletion[sublist[0]]="easy: " True
所以你不需要在每一个循环中都使用它

因此,您不需要在每个循环中都使用它。

var级别=[
“一级:简单”,
“一级:正常”,
“一级:硬”,
“二级:简单”,
“二级:正常”,
“三级:简单”,
“三级:硬”
];
var obj={},t,i,keys={};
对于(i=0;i
var级别=[
“一级:简单”,
“一级:正常”,
“一级:硬”,
“二级:简单”,
“二级:正常”,
“三级:简单”,
“三级:硬”
];
var obj={},t,i,keys={};
对于(i=0;i控制台日志(输出)这是我可能的处理方法,其中一些只是我在转换数组时倾向于.map和.reduce。当输出的元素数始终与输入的元素数完全相同时进行映射,当元素数较少时进行缩减,如此处所示。如果您不熟悉它,它基本上会在每个元素上执行一个函数,从该函数返回的任何内容都会在下一个函数调用中作为参数提供(我的代码中的newLevels参数)