简体   繁体   English

从两个数组创建/合并对象哈希图

[英]Create/merge an object hashmap from two arrays

I'm working on a project that requires me to create a hashmap, it's my first one and after researching I am stuck. 我正在做一个需要创建哈希图的项目,这是我的第一个,经过研究,我陷入了困境。 I need to create the map from two arrays. 我需要从两个数组创建地图。

Array 1: 阵列1:

var arrayOne = [ "board", "admin" ]

These would be added to a map Object with a default value of false, I can get to this part: 这些将被添加到默认值为false的map Object中,我可以进入这一部分:

var myMap = {
    board: false,
    admin: false
}

Array 2: 阵列2:

var arrayTwo = [ "board" ]

Only 'board' exists here, so I want to turn the value to 'true'. 这里仅存在“ board”,因此我想将值设为“ true”。 I'm stuck on where to go next so I end up with: 我被困在下一步,所以我最终得到了:

var myMap = {
    board: true,
    admin: false
}

Here's my script so far: 到目前为止,这是我的脚本:

var myMap = {};
var arrayOne = [ "board", "admin" ];
for (var i = 0; i < arrayOne.length; i++) {
    var a = arrayOne[i];
    myMap[a] = false; // sets default value
}

Any help to do the 'next bit' to merge the two is greatly appreciated, thank you. 非常感谢您做任何帮助“下一步”将两者合并的工作,谢谢。

I think you should continue with the following: 我认为您应该继续执行以下操作:

for (var i = 0; i < arrayTwo.length; i++) {
    if (arrayTwo[i] in myMap)
        myMap[arrayTwo[i]] = true;
}

... setting properties to true only if they exist in the map. ...仅在地图中存在属性时才将其设置为true

Use indexOf() method to check if the item is in second array or not 使用indexOf()方法检查项目是否在第二个数组中

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

http://www.w3schools.com/jsref/jsref_indexof_array.asp http://www.w3schools.com/jsref/jsref_indexof_array.asp

var myMap = {};
var arrayOne = [ "board", "admin" ];
for (var i = 0; i < arrayOne.length; i++) {
    var a = arrayOne[i];
    myMap[a] = false; // sets default value
    if ( arrayTwo.indexOf( a ) != -1 )
    {
        myMap[a] = true;
    }
}

Just do one then the other... 只是做一个然后另一个...

var i;
var myMap = {};
var arrayOne = [ "board", "admin" ];

for (i = 0; i < arrayOne.length; i++) {
     myMap[arrayOne[i]] = false;
}

var arrayTwo = [ "board" ];

for (i = 0; i < arrayTwo.length; i++) {
     myMap[arrayTwo[i]] = true;
}

ES5 version ES5版本

arrayOne.forEach(function(item){
    myMap[item] = false;
});
arrayTwo.forEach(function(item){
    (item in myMap) && (myMap[item] = true);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM