关联数组中的 Javascript 函数不起作用

标签 javascript

我正在尝试获取以下内容以返回适当的 key ,但始终只得到 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
}

最佳答案

您的对象中有相同的键 {4:,4:,4:,2:,2:}。尝试使按键独一无二改变你的方法,就像安迪的回答一样。

否则,只有当该值恰好是对象中的第一个键时才会起作用

var strZip = "96161";

var regionCodes = {
1: '00501',    
2: '00544',    
3: '06390',    
4: '96161',    
5: '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);
console.log(zipKey);

或者key -> arrayindexOf()一起使用

var strZip = "961261";

var regionCodes = {
4: ['00501', '00544',  '06390'],
2: ['96161', '96162'],
getKey: function(value){
    for(var key in this){
        if(typeof(this[key]) != 'function' && this[key].indexOf(value) > -1){
            return key;
        }
    }
    return 9; // Default 9 if not found
    }
};

var zipKey = regionCodes.getKey(strZip);
console.log(zipKey);

关于关联数组中的 Javascript 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30642100/

相关文章:

javascript - 每次路由 View 时都会执行 AngularJS Controller

JavaScript 函数在某个 if 语句后停止

javascript - 是否可以在垂直谷歌聊天线图上包含与条形内嵌的单独条形标签?

javascript - 模块和 Node.js

javascript - 传递键以将循环中的值与参数函数进行比较

javascript - 将get查询中的参数传递给vue js?

javascript - 如何使用 Angular JS 常量值

javascript - 我在这个 Node.js 代码示例中使用了什么模式?

javascript - 使用 JavaScript 检测点击进入 Iframe

javascript - Jquery 函数作为对象