我一直在尝试从数组(data_array)访问数组成员。我的变量data_array是json的一部分,类似于下面的代码。下面的代码不是实际代码。当我尝试创建一个React组件时,实际的代码正在发挥作用。我可以粘贴完整的React组件,但它会包含一些不必要的信息。所以我想我会添加一些模拟的例子。如果它误导人们就道歉。目前我希望能在这种情况下得到一些可能出错的提示吗? :
data: {
"name": "Arjun",
"records" : [
{
"value": 3
},
{
"value": 6
},
{
"value":7
}
]
}
var data_array = data.records
console.log(data_array) -> Array[3]
console.log(data_array[0]) -> It displays Uncaught TypeError: Cannot read property '0' of undefined
console.log(typeof data_array) -> Object.
令我困惑的是我的第一个输出,因为它说它是一个数组。我对javascript很新。也许我错过了一些东西。任何帮助将不胜感激。
编辑:这仍然会缺少嵌套的React组件,但在这种情况下它没用。我现在正在调用嵌套组件Foo
var React = require('react'),
Router = require('react-router'),
mui = require('material-ui'),
Foo = require('./foo.jsx');
var TempReact = React.createClass({
mixins: [Router.Navigation],
getInitialState: function() {
return {
data: {}
};
},
componentDidMount: function() {
// Do a web request here to actually get the data from the backend API
// this.setState({
// });
// For now, load our fake data
this._loadFakeData();
},
render: function() {
//console.log(this.state.data)
for(var record in this.state.data.records) {
console.log(record.Value);
}
//console.log(this.state.data["records"][0]["Value"])
return (
<div>
<p>^ That will still say , since the header up there is decided by temp-page.jsx, which is
based on the route</p>
<br/>
<p>We've loaded the fake data into our component's state, and here's proof:</p>
{this.state.data.name}
<br/>
<br/>
<Foo name={["temp1",this.state.data.records,"green"]}/>
</div>
);
},
_loadFakeData: function() {
this.setState({
data: {
"name": "Arjun",
"records" : [
{
"Value": 6
},
{
"Value": 7
},
{
"Value": 8
}
]
}
});
}
});
module.exports = TempReact;
答案 0 :(得分:3)
数组是typeof Object。他们只是一个有些花哨的东西的对象。
以下示例有效:
class MyClass {
final String foo = "foo";
private Consumer<String> getFn() {
return getFn(foo);
}
private static Consumer<String> getFn(String localFoo) {
return bar -> System.out.println(bar + localFoo);
}
}
当您执行以下操作时会发生此错误:
var data = {
"name": "Arjun",
"records" : [
{
"value": 3
},
{
"value": 6
},
{
"value":7
}
]
}
var data_array = data.records
console.log(data_array[0]) // Object {value: 3}
答案 1 :(得分:0)
你不远处可以说你将这个对象存储在一个名为jsonData的变量中只是为了一个例子:
var jsonData = {
data: {
"name": "Arjun",
"records" : [
{
"value": 3
},
{
"value": 6
},
{
"value":7
}
]
}
}
您需要访问变量&gt;物业&gt;嵌套属性,然后像这样指定索引:
var data_array = jsonData.data;
console.log(data_array.records[0].value)
- &GT;应记录3
答案 2 :(得分:0)
所以问题可能出在React中的SetState(),我能够通过先在空数组中推送它们来访问对象:
var varArr = new Array();
for(key in this.state.data.records) {
if(this.state.data.records.hasOwnProperty(key)) {
var value = this.state.data.records[key];
varArr.push(value);
}
}
答案 3 :(得分:-1)
data_array是一个数组。数组中的data.records。你期待看到什么?