为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ibeautiful 2021-05-12 17:54:48
假设我有字符串数组(但它也可以与数字数组一起使用)。我想在它们上面创建一个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
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

我发现我缺少的地方,至少对于2个数组,没有为Map的“值”使用正确的“索引”,所以这种方式有效:


for( val in engWords){


   const nk =  engWords[val];

       engWords.forEach(function(element) {

       pairsMap.set(nk,itaWords[val]);  

   } )

}


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

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

}

并且对对象数组也进行了同样的更改,但是在

使用按名称分组的方法上却没有效果:


for( val in clients){


   const nk =  clients[val];

      products.forEach(function(element) {

      productsMap.set(nk,products[val]);  

   } )

 }

尽管关系的顺序保持原始数组中顺序的顺序,所以顺序仍然不是动态的。


[更新]


我能够进行比较以检查数组的元素是否也在Map中(另一个目标),并对上面的内容稍作修改,但是似乎吸收了太多的Chrome CPU,因为从Chrome Task Manager中我的文件占用了更多资源然后是109%的GPU(浏览器),对我来说似乎很奇怪。


let m = ['casa','house']; 


Array.from(newMap.keys()).forEach((k, i) => {

    var values = newMap.get(k);

    for(let j = 0;j < m.length ; i++){

       if(m[i] == values){

           console.log(m[i]);

       }  

    }     

})    


查看完整回答
反对 回复 2021-05-27
  • 1 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信