如果数组是
,请提前感谢var animals = ['Cow', 'Cow', 'Dog', 'Cat'];
var sounds = ['Moo', 'Oink', 'Woof', 'Miao'];
如何获得像这样的关联数组
// returns {'Cow': 'Moo', 'Cow': 'Oink', 'Dog': 'Woof', 'Cat': 'Miao'}
答案 0 :(得分:1)
所有3个选项中的JS小提琴:http://jsfiddle.net/ysLvfxmd/2/
你想要一个哈希/关联数组,循环并通过索引创建一个,但是你不能在哈希中有重复的键,所以你可能想要探索其他数据结构。
Pure Hash
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);
这只会显示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);
但是,请注意,数组的索引现在是数字的,但您可以搜索它以查找您的值。
第三种选择:
阵列哈希(最佳)
//Paul Rob's suggestion hash of arrays
var animals = ['Cow', 'Cow', 'Dog', 'Cat'];
var sounds = ['Moo', 'Oink', 'Woof', 'Miao'];
var hashOfArr = [];
for(i = 0; i < animals.length; i++) {
if(!hashOfArr[animals[i]]){
hashOfArr[animals[i]] = [];
}
hashOfArr[animals[i]].push(sounds[i]);
}
console.log(hashOfArr);
答案 1 :(得分:0)
你真正想要的是不可能的。对象不能有多个键。
有一个对象,其中每个键的值是一个数组。如果一只动物有多个声音,你只需将它推入阵列即可。
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]];
}