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

标签 javascript algorithm dictionary

假设我有字符串数组(但它应该与数字数组一起工作)。

我想在它们之上创建一个 Map 对象,其中一个的值 2 作为键,其他的作为值,但基本上是为了建立关系。下一步是从 2 个对象数组创建一个映射,但这有点复杂。

不幸的是,到目前为止我的方法不起作用(因为几个小时尝试让它起作用),因为我得到第二个值 Map Iterator 要么用于对象数组

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

最佳答案

我找到了我遗漏的地方,至少对于 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 任务管理器文件占用了超过 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]);
       }  
    }     
})    

关于javascript - 从 2 个数组创建一个字典( MAP ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091913/

相关文章:

javascript - 在没有jquery的情况下将Javascript数组发送到Spring Controller

c++ - 最大化异或方程

python - 字典列表中的 Pandas 数组

javascript - 变量未定义错误(即使console.log显示变量)

JavaScriptCore 控制台.log

javascript - jQuery 最佳实践 : hide/doSomething/show sequence

c - 无符号 8 位整数的 Bignum 除法。 C

algorithm - 通过小世界图找到路径的最有效方法是什么?

android - map 布局问题

python - 计算列表列表中字符串的出现次数