[英]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.