首先array也是obj。只是一个特殊的object。
obj一个很关键的点,是拥有成员和方法,撇开方法不说,obj就是一个key-value结构。也就是哈希数组,而js的数组只能是由数字索引组成的。撇开了key,只留下value的话数据丢失太多。如果保留了key,那么就是哈希数组,而在js里面,哈希数组属于obj,不属于array。
强制转换如下。
var arr = []
for(i in obj){
arr.push(i)
IPLocationMap是不是异步获取的。例如通过ajax得到的?如果是这样的话你写成callback,等到获ajax请求完成之后再去取值。例如:
/* 因为ajax是异步请求, 例如我们打开一个网站,并不是立即显示出来的,是经过一定的延迟才显示的,所以我用setTimeout模拟ajax请求的延迟,callback参数是一直到setTimeout结束才会执行。
*/
function getIPAddr(callback) {
setTimeout(function() {
var IPLocationMap = {
"localhost": "本地电脑",
"0.0.0.0": "DNS"
}
callback(IPLocationMap)
}, 5000)
}
getIPAddr(function(addr) {
console.log(addr['0.0.0.0'])
})