Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组迭代_Javascript_Json_Sessionstorage - Fatal编程技术网

Javascript数组迭代

Javascript数组迭代,javascript,json,sessionstorage,Javascript,Json,Sessionstorage,我在sessionStorage中有一个JavaScript数组,当我执行sessionStorage.getitem('states')时,我得到如下结果: "{ "TamilNadu": [ "Chennai", "Trichy", "Madurai" ], "Andhra": [ "Hyderabad", "Vizhag" ], "Karnataka": [

我在
sessionStorage
中有一个JavaScript数组,当我执行
sessionStorage.getitem('states')
时,我得到如下结果:

"{
    "TamilNadu": [
        "Chennai", 
        "Trichy", 
        "Madurai"
    ],
    "Andhra": [
        "Hyderabad",
        "Vizhag"
    ],
    "Karnataka": [
        "Bangalore",
        "Mysore",
        "Darwad"
    ],
    "Maharashtra": [
        "Mumbai",
        "Pune"
    ]
}"
现在我的要求是从城市名称中获取州名称。 例如,如果我将
“Mumbai”
作为参数传递给一个函数,则该函数应读取此
会话存储
值并返回我
“Maharashtra”

您能帮助我如何实现这一点吗?

此代码:

sessionStorage.getitem('states')
返回一个字符串。您必须使用以下命令对其进行分析:

var obj = JSON.parse(sessionStorage.getitem('states')) 
然后使用方括号或点访问对象属性:

for (var attr in obj) {
    if (obj.hasOwnProperty(attr) && obj[attr][0] == 'Mumbai') {
        return attr;
    }
}
return null;
此代码:

sessionStorage.getitem('states')
返回一个字符串。您必须使用以下命令对其进行分析:

var obj = JSON.parse(sessionStorage.getitem('states')) 
然后使用方括号或点访问对象属性:

for (var attr in obj) {
    if (obj.hasOwnProperty(attr) && obj[attr][0] == 'Mumbai') {
        return attr;
    }
}
return null;
此代码:

sessionStorage.getitem('states')
返回一个字符串。您必须使用以下命令对其进行分析:

var obj = JSON.parse(sessionStorage.getitem('states')) 
然后使用方括号或点访问对象属性:

for (var attr in obj) {
    if (obj.hasOwnProperty(attr) && obj[attr][0] == 'Mumbai') {
        return attr;
    }
}
return null;
此代码:

sessionStorage.getitem('states')
返回一个字符串。您必须使用以下命令对其进行分析:

var obj = JSON.parse(sessionStorage.getitem('states')) 
然后使用方括号或点访问对象属性:

for (var attr in obj) {
    if (obj.hasOwnProperty(attr) && obj[attr][0] == 'Mumbai') {
        return attr;
    }
}
return null;
函数getStateByCityName(cityName){ 变量状态={}; 试一试{ states=JSON.parse(sessionStorage.getitem('states'); }捕获(e){ } for(状态中的var状态){ 对于(var i=0;i
函数getStateByCityName(cityName){
变量状态={};
试一试{
states=JSON.parse(sessionStorage.getitem('states');
}捕获(e){
}
for(状态中的var状态){
对于(var i=0;i
函数getStateByCityName(cityName){
变量状态={};
试一试{
states=JSON.parse(sessionStorage.getitem('states');
}捕获(e){
}
for(状态中的var状态){
对于(var i=0;i
函数getStateByCityName(cityName){
变量状态={};
试一试{
states=JSON.parse(sessionStorage.getitem('states');
}捕获(e){
}
for(状态中的var状态){
对于(var i=0;i
应该可以工作但无法测试:

function (arrayTarget, itemToSearch){
    for (x in arrayTarget) {
        for(y in arrayTarget[x])
            if(itemToSearch == arrayTarget[x][y])
                 return x;   
    }
}

这应该有效,但无法测试:

function (arrayTarget, itemToSearch){
    for (x in arrayTarget) {
        for(y in arrayTarget[x])
            if(itemToSearch == arrayTarget[x][y])
                 return x;   
    }
}

这应该有效,但无法测试:

function (arrayTarget, itemToSearch){
    for (x in arrayTarget) {
        for(y in arrayTarget[x])
            if(itemToSearch == arrayTarget[x][y])
                 return x;   
    }
}

这应该有效,但无法测试:

function (arrayTarget, itemToSearch){
    for (x in arrayTarget) {
        for(y in arrayTarget[x])
            if(itemToSearch == arrayTarget[x][y])
                 return x;   
    }
}
或者只需使用
if(states[state].indexOf(cityName)!=-1)

或者使用EcmaScript 5循环样式:))


有很多方法(也可以看到其他的答案),所以让我们来看看性能。

首先遍历对象

在我的浏览器中,最快的例子是循环的
Object.keys
,所以

getStateByCityName(cityName) {
    var statesRaw = sessionStorage.getitem('states');
    var states = JSON.parse(statesRaw);
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
          // check if city exists
    }
    return false;
}
正如有人建议的那样,使用
try/catch

getStateByCityName(cityName) {
    var states = {};
    try {
        states = JSON.parse(sessionStorage.getitem('states'));
    } catch (e) {
    }
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
        if (states[states_keys[i]].indexOf(cityName) !== -1) {
            return states_keys[i];
        }
    }
    return false;
}
getStateByCityName(cityName){
变量状态={};
试一试{
states=JSON.parse(sessionStorage.getitem('states');
}捕获(e){
}
var states_keys=Object.keys(states);
对于(变量i=0,l=states_keys.length;i
或者只需使用
if(states[state].indexOf(cityName)!=-1)

或者使用EcmaScript 5循环样式:))


有很多方法(也可以看到其他的答案),所以让我们来看看性能。

首先遍历对象

在我的浏览器中,最快的例子是循环的
Object.keys
,所以

getStateByCityName(cityName) {
    var statesRaw = sessionStorage.getitem('states');
    var states = JSON.parse(statesRaw);
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
          // check if city exists
    }
    return false;
}
正如有人建议的那样,使用
try/catch

getStateByCityName(cityName) {
    var states = {};
    try {
        states = JSON.parse(sessionStorage.getitem('states'));
    } catch (e) {
    }
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
        if (states[states_keys[i]].indexOf(cityName) !== -1) {
            return states_keys[i];
        }
    }
    return false;
}
getStateByCityName(cityName){
变量状态={};
试一试{
states=JSON.parse(sessionStorage.getitem('states');
}捕获(e){
}
var states_keys=Object.keys(states);
对于(变量i=0,l=states_keys.length;i
或者只需使用
if(states[state].indexOf(cityName)!=-1)

或者使用EcmaScript 5循环样式:))


有很多方法(也可以看到其他的答案),所以让我们来看看性能。

首先遍历对象

在我的浏览器中,最快的例子是循环的
Object.keys
,所以

getStateByCityName(cityName) {
    var statesRaw = sessionStorage.getitem('states');
    var states = JSON.parse(statesRaw);
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
          // check if city exists
    }
    return false;
}
正如有人建议的那样,使用
try/catch

getStateByCityName(cityName) {
    var states = {};
    try {
        states = JSON.parse(sessionStorage.getitem('states'));
    } catch (e) {
    }
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
        if (states[states_keys[i]].indexOf(cityName) !== -1) {
            return states_keys[i];
        }
    }
    return false;
}
getStateByCityName(cityName){
变量状态={};
试一试{
states=JSON.parse(sessionStorage.getitem('states');
}捕获(e){
}
var states_keys=Object.keys(states);
对于(变量i=0,l=states_keys.length;i
或者只需使用
if(states[state].indexOf(cityName)!=-1)

或者使用EcmaScript 5循环样式:))


有很多方法(也可以看到其他的答案),所以让我们来看看性能。

首先遍历对象

在我的浏览器中,最快的例子是循环的
Object.keys
,所以

getStateByCityName(cityName) {
    var statesRaw = sessionStorage.getitem('states');
    var states = JSON.parse(statesRaw);
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
          // check if city exists
    }
    return false;
}
正如有人建议的那样,使用
try/catch

getStateByCityName(cityName) {
    var states = {};
    try {
        states = JSON.parse(sessionStorage.getitem('states'));
    } catch (e) {
    }
    var states_keys = Object.keys(states);

    for (var i = 0, l = states_keys.length; i < l; i++) {
        if (states[states_keys[i]].indexOf(cityName) !== -1) {
            return states_keys[i];
        }
    }
    return false;
}
getStateByCityName(cityName){
变量状态={};
试一试{
states=JSON.parse(sessionStorage.getitem('states');
}捕获(e){
}
var states_keys=Object.keys(states);
对于(变量i=0,l=states_keys.length;i
如何迭代字符串?必须执行JSON.parseI已添加了对字符串的解析添加了try…catch而没有真正处理