猿问

从2个数组创建一个字典(MAP)

假设我有字符串数组(但它也可以与数字数组一起使用)。


我想在它们上面创建一个Map对象,以2的值作为键,其他的值作为键,但是基本上是要建立一种关系。在下一步之后,将根据2个对象数组创建一个Map,但这有点复杂。


不幸的是,到目前为止,我的方法不起作用(因为要花几个小时才能使它起作用),因为我获得了第二个值,即“ Map Iterator”或者“ Objects Arrays”。


let pairsMap = new Map(); 

let productsMap = new Map();

let engWords = ['house','gift','zoo','tidy','flat','to play',' to see','boy','ice cream']

let itaWords = ['casa','regalo','zoo','ordinato','appartamento','giocare','guardare','ragazzo','gelato'] 

let pairsMap = new Map(); 

let productsMap = new Map();

let products = [

{

  name: "chair",

  inventory: 5,

  unit_price: 45.99,

  client:'MG Gmbh'

},

{

  name: "table",

  inventory: 10,

  unit_price: 123.75,

  client : "XYZ"

},

{

  name: "sofa",

  inventory: 2,

  unit_price: 399.50,

  client : "MongoDB"

}];


let clients  =[

 {

     name:"MG Gmbh",

     address: 'Linen street',

     country: 'Germany'

 },

 {

     name:'XYZ',

     address:'Mongomery street',

     country: 'USA'

 },

 {

     name:'MongoDB',

     address: 'NoSQL road',

     country: 'UK'

 },

 {

    name:'Zeppelin',

    address: 'lienestraße',

    country: 'Germany'

}];


for( val in engWords){


      const nk =  engWords[val];

      engWords.forEach(function(element) {

      const v = pairsMap.values();

      pairsMap.set(nk,v);  

    } )

   }


 for (let [b, z] of pairsMap){

     console.log(b, " -> ", z)

 }


 function groupBy(objectArray, property) {

      return objectArray.reduce(function (acc, obj) {

   var key = obj[property];

     if (!acc[key]) {

        acc[key] = [];

     }

     acc[key].push(obj);

     return acc;

     }, {});

  }



let clients_name = console.log(groupedClients);



 for( val in groupedClients){


       const nk =  groupedClients[val];

       products.forEach(function(element) {

           const v = productsMap.values();

           productsMap.set(nk,v);   


       } )

   }

这是我想得到的结果(来自engWords和itaWords)


house  ->  casa 

gift  ->  regalo 

zoo  ->  zoo 

tidy  ->  ordinato 

flat  ->  appartamento 

to play  ->  giocare 

to see  ->  guardare 

boy  ->  ragazzo 

ice cream  ->  gelato


ibeautiful
浏览 264回答 1
1回答

千万里不及你

我发现我缺少的地方,至少对于2个数组,没有为Map的“值”使用正确的“索引”,所以这种方式有效:for( val in engWords){&nbsp; &nbsp;const nk =&nbsp; engWords[val];&nbsp; &nbsp; &nbsp; &nbsp;engWords.forEach(function(element) {&nbsp; &nbsp; &nbsp; &nbsp;pairsMap.set(nk,itaWords[val]);&nbsp;&nbsp;&nbsp; &nbsp;} )}for (let [b, z] of pairsMap){&nbsp; &nbsp; console.log(b, " -> ", z)}并且对对象数组也进行了同样的更改,但是在使用按名称分组的方法上却没有效果:for( val in clients){&nbsp; &nbsp;const nk =&nbsp; clients[val];&nbsp; &nbsp; &nbsp; products.forEach(function(element) {&nbsp; &nbsp; &nbsp; productsMap.set(nk,products[val]);&nbsp;&nbsp;&nbsp; &nbsp;} )&nbsp;}尽管关系的顺序保持原始数组中顺序的顺序,所以顺序仍然不是动态的。[更新]我能够进行比较以检查数组的元素是否也在Map中(另一个目标),并对上面的内容稍作修改,但是似乎吸收了太多的Chrome CPU,因为从Chrome Task Manager中我的文件占用了更多资源然后是109%的GPU(浏览器),对我来说似乎很奇怪。let m = ['casa','house'];&nbsp;Array.from(newMap.keys()).forEach((k, i) => {&nbsp; &nbsp; var values = newMap.get(k);&nbsp; &nbsp; for(let j = 0;j < m.length ; i++){&nbsp; &nbsp; &nbsp; &nbsp;if(m[i] == values){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;console.log(m[i]);&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp;&nbsp;&nbsp; &nbsp; }&nbsp; &nbsp; &nbsp;})&nbsp; &nbsp;&nbsp;
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答