Javascript Jquery将两个数组(键、值)关联到一个具有重复键的数组中

Javascript Jquery将两个数组(键、值)关联到一个具有重复键的数组中,javascript,Javascript,如果阵列不可用,请提前感谢 var animals = ['Cow', 'Cow', 'Dog', 'Cat']; var sounds = ['Moo', 'Oink', 'Woof', 'Miao']; 如何获得这样的assoc数组 // returns {'Cow': 'Moo', 'Cow': 'Oink', 'Dog': 'Woof', 'Cat': 'Miao'} JS Fiddle包含所有3个选项: 您需要一个散列/关联数组,循环并按索引创建一个,但是散列中不能有重复的键,因

如果阵列不可用,请提前感谢

var animals = ['Cow', 'Cow', 'Dog', 'Cat'];
var sounds = ['Moo', 'Oink', 'Woof', 'Miao'];
如何获得这样的assoc数组

 // returns {'Cow': 'Moo', 'Cow': 'Oink', 'Dog': 'Woof', 'Cat': 'Miao'}

JS Fiddle包含所有3个选项:

您需要一个散列/关联数组,循环并按索引创建一个,但是散列中不能有重复的键,因此您可能需要探索其他数据结构

纯散列

var animals = ['Cow', 'Cow', 'Dog', 'Cat'];
var sounds = ['Moo', 'Oink', 'Woof', 'Miao'];
var hash = {};

for(i = 0; i < animals.length; i++) {
    hash[animals[i]] = sounds[i];
}

console.log(hash);
var-animals=['Cow','Cow','Dog','Cat'];
变量声音=['Moo','Oink','Woof','Miao'];
var hash={};
对于(i=0;i
这只会显示Cow一次,如果您想让Cow对具有非唯一键,则需要创建一个哈希数组

散列数组

var animals = ['Cow', 'Cow', 'Dog', 'Cat'];
var sounds = ['Moo', 'Oink', 'Woof', 'Miao'];
var arr = [];

for(i = 0; i < animals.length; i++) {
    var hash = {};
    hash[animals[i]] = sounds[i];
    arr.push(hash);
}

console.log(arr);
var-animals=['Cow','Cow','Dog','Cat'];
变量声音=['Moo','Oink','Woof','Miao'];
var-arr=[];
对于(i=0;i
但是,请注意,数组的索引现在是数字的,但您可以通过搜索来查找您的值

第三种选择:

数组散列(最佳)

//Paul Rob的数组哈希建议
动物变量=[‘牛’、‘牛’、‘狗’、‘猫’];
变量声音=['Moo','Oink','Woof','Miao'];
var hashOfArr=[];
对于(i=0;i
简短回答 你真正想要的是不可能的。对象不能有多个键

我的建议 有一个对象,其中每个键的值都是一个数组。如果一只动物有多个声音,你只需将它推入阵列即可

var
animals = ['Cow', 'Cow', 'Dog', 'Cat'],
sounds = ['Moo', 'Oink', 'Woof', 'Miao'],
result = {};

for(i = 0; i < animals.length; i++) {
    result[animals[i]]
        ? result[animals[i]].push(sounds[i])
        : result[animals[i]] = [sounds[i]];
}
var
动物=[‘牛’、‘牛’、‘狗’、‘猫’],
声音=['Moo','Oink','Woof','Miao'],
结果={};
对于(i=0;i

你的意思是“猪”代表第二头“牛”,对吗?一个对象不能有两个相同的键。如何?编写一个算法并编写代码。这里没有人会为你编码。这不是SO的目的。使用散列数组似乎更明智,例如,
{'Cow':['Moo','Oink'],'Dog':['Woof'],'Cat':['Miao']}
我在写了它之后也在想同样的事情,让我再添加一个例子
var
animals = ['Cow', 'Cow', 'Dog', 'Cat'],
sounds = ['Moo', 'Oink', 'Woof', 'Miao'],
result = {};

for(i = 0; i < animals.length; i++) {
    result[animals[i]]
        ? result[animals[i]].push(sounds[i])
        : result[animals[i]] = [sounds[i]];
}