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而没有真正处理