【发布时间】:2015-06-04 11:00:24
【问题描述】:
我正在尝试获取以下内容以返回适当的密钥,但始终只获得 9 个。帮助,谢谢。
var strZip = "96161";
var regionCodes = {
4: '00501',
4: '00544',
4: '06390',
2: '96161',
2: '96162',
getKey: function(value){
for(var key in this){
if(this[key] == value){
return key;
}
}
return 9; // Default 9 if not found
}
};
var zipKey = regionCodes.getKey(strZip);
我也尝试过(但失败了)变体:
getKey: function(value){
for(var key in this){
if( this.hasOwnProperty( key) ) {
if(this[key] === value){
return key;
}
}
}
return 9; // Default 9 if not found
}
【问题讨论】:
-
第二个
2: '96162'覆盖第一个。同一个“键”上不能有多个“值” -
您的代码显示了一个具有重复属性名称的对象。
-
您应该恢复地图(将您的值作为键)或使用数组。
-
js 没有 associative array,所以当你定义文字对象时 - js 没有 push 每个属性,而是用最后一个值覆盖相同的键
-
值得一提的是,出于某种原因,Ecmascript 6 实际上会支持重复的对象键。
标签: javascript