使用javascript map读取键值对时出错,填充选择器反应原生

时间:2017-03-12 18:56:56

标签: javascript android react-native

我正在尝试为kay,value对中的本地反应中的picker元素填充键值。当我尝试传递键值列表时,应用程序崩溃。

例如:(这不起作用)

-- In the constructor
stateList: [{1:'Fortsworth'},{2:'Chicago'}],

--In the render()
this.state.stateList.map( (s, i) => {
  console.log('key='+i+',value='+s);
   return <Picker.Item key={i} value={s} label={s} />
});

然而,只有在没有键值对的情况下传递数组时它才有效。以下代码有效。

-- In the constructor
stateList: ['Fortsworth','Chicago'],

--In the render()
this.state.stateList.map( (s, i) => {
  console.log('key='+i+',value='+s);
   return <Picker.Item key={i} value={s} label={s} />
});

我需要将密钥传递为“1”并将值作为“Fortsworth”传递给选择器。感谢您的意见。

2 个答案:

答案 0 :(得分:1)

这是我所知道的唯一方法:

Object.keys(this.state.stateList).map(function(key) {
    let value = this.state.stateList[key];
    console.log('key=' + key + ',value=' + value);
    return <Picker.Item key={key} value={value} label={value} />
}

基本上,您循环遍历键列表,然后使用该键从地图中提取值。

如果有人有更好的解决方案,请务必将其作为答案,因为我对此也很好奇。

编辑

抱歉,刚刚意识到你有一个地图条目列表。对于我的回答,您需要stateList作为地图:

stateList: {1:'Fortsworth', 2:'Chicago'}

答案 1 :(得分:0)

这应该会给你一些想法 -

var states = [{'1': 'Fortsworth'}, {'2': 'Chicago'}];
var key = '';

states.map(s => {
  key = Object.keys(s)[0];
  console.log("key",key,"value",s[key]);
});