0

我正在做一个需要我创建哈希图的项目,这是我的第一个,在研究之后我被卡住了。我需要从两个数组创建地图。

阵列 1:

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

这些将被添加到默认值为 false 的地图对象中,我可以进入这部分:

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

阵列 2:

var arrayTwo = [ "board" ]

这里只存在“板”,所以我想将值变为“真”。我被困在下一步要去哪里,所以我最终得到:

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

到目前为止,这是我的脚本:

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

非常感谢您对合并两者的“下一点”的任何帮助,谢谢。

4

4 回答 4

2

我认为您应该继续以下操作:

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

... 将属性设置为true仅当它们存在于地图中时。

于 2013-10-15T11:10:37.463 回答
1

使用 indexOf() 方法检查项目是否在第二个数组中

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

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;
    }
}
于 2013-10-15T11:10:28.763 回答
0

只做一个然后另一个...

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;
}
于 2013-10-15T11:10:17.623 回答
0

ES5 版本

arrayOne.forEach(function(item){
    myMap[item] = false;
});
arrayTwo.forEach(function(item){
    (item in myMap) && (myMap[item] = true);
});
于 2013-10-15T11:15:36.897 回答