Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Reactjs_Object_React Props - Fatal编程技术网

Javascript 如何从对象数组中获取值?

Javascript 如何从对象数组中获取值?,javascript,arrays,reactjs,object,react-props,Javascript,Arrays,Reactjs,Object,React Props,我有一个react应用程序,使用redux和道具将对象数组放入我的组件中,我正在获取它们。但我无法访问该数组中某个对象内部的特定属性 为此: console.log(this.props.users) 我列出了一个数组,里面有所有的对象。但当我需要访问该对象的特定对象或属性时,例如: console.log(this.props.users[0]) console.log(this.props.users[0].name) 我得到一个错误: Cannot read property '0'

我有一个react应用程序,使用redux和道具将对象数组放入我的组件中,我正在获取它们。但我无法访问该数组中某个对象内部的特定属性

为此:

console.log(this.props.users)
我列出了一个数组,里面有所有的对象。但当我需要访问该对象的特定对象或属性时,例如:

console.log(this.props.users[0])
console.log(this.props.users[0].name)
我得到一个错误:

Cannot read property '0' of undefined

但当我使用map()方法遍历数组时,我可以访问它,它就可以工作了。为什么我不能正常访问它?

可能是在您执行该行时
此.props.users
未定义。检查添加了
console.log(this.props.users[0])
的流程,当您执行该行时,
this.props.users
未定义。检查添加了
console.log(this.props.users[0])的流程

在加载此.props.users之前,您试图访问其属性。组件在不等待数据获取的情况下呈现。当你
console.log(this.props.users)
你说你得到了一个数组,但是在上面,当组件在
this.props.users
加载之前呈现时,它可能至少记录一次
未定义的

你有两个选择。您可以在render方法的最顶端执行此操作,以防止该方法中的其余代码执行:

if (!this.props.users) return null;
一旦获取了数据并且道具发生了变化,就会再次调用render方法


另一个选项是在reducer中为
用户
声明一个空数组的默认值。

您试图在加载
this.props.users
之前访问它的属性。组件在不等待数据获取的情况下呈现。当你
console.log(this.props.users)
你说你得到了一个数组,但是在上面,当组件在
this.props.users
加载之前呈现时,它可能至少记录一次
未定义的

const App = () => {
  
  const example = () => {
    const data =[{id:1 ,name: "Users1", description: "desc1"}, 
                {id:2 ,name: "Users2", description: "desc2"}];
    return (
      <div>
      {data.map(function(cValue, idx){
          console.log("currentValue.id:",cValue.id);
          console.log("currentValue.name:",cValue.name);
          console.log("currentValue.description:",cValue.description);
         return (<li key={idx}>name = {cValue.name} description = {cValue.description}</li>)
      })}
      </div>
      );
    }

  return(
    <p style = {{color:'white'}}>
      {example()}
    </p>
  );
}

export default App;
你有两个选择。您可以在render方法的最顶端执行此操作,以防止该方法中的其余代码执行:

if (!this.props.users) return null;
一旦获取了数据并且道具发生了变化,就会再次调用render方法

另一个选项是为reducer中的
用户
声明空数组的默认值。

const-App=()=>{
const App = () => {
  
  const example = () => {
    const data =[{id:1 ,name: "Users1", description: "desc1"}, 
                {id:2 ,name: "Users2", description: "desc2"}];
    return (
      <div>
      {data.map(function(cValue, idx){
          console.log("currentValue.id:",cValue.id);
          console.log("currentValue.name:",cValue.name);
          console.log("currentValue.description:",cValue.description);
         return (<li key={idx}>name = {cValue.name} description = {cValue.description}</li>)
      })}
      </div>
      );
    }

  return(
    <p style = {{color:'white'}}>
      {example()}
    </p>
  );
}

export default App;
常量示例=()=>{ const data=[{id:1,名称:“Users1”,说明:“desc1”}, {id:2,名称:“Users2”,描述:“desc2”}]; 返回( {data.map(函数(cValue,idx){ log(“currentValue.id:”,cValue.id); log(“currentValue.name:”,cValue.name); 日志(“currentValue.description:”,cvvalue.description); 返回(
  • name={cValue.name}description={cValue.description}
  • ) })} ); } 返回(

    {example()}

    ); } 导出默认应用程序;
    const-App=()=>{
    常量示例=()=>{
    const data=[{id:1,名称:“Users1”,说明:“desc1”},
    {id:2,名称:“Users2”,描述:“desc2”}];
    返回(
    {data.map(函数(cValue,idx){
    log(“currentValue.id:”,cValue.id);
    log(“currentValue.name:”,cValue.name);
    日志(“currentValue.description:”,cvvalue.description);
    返回(
  • name={cValue.name}description={cValue.description}
  • ) })} ); } 返回(

    {example()}

    ); } 导出默认应用程序;

    请发布第一个控制台状态的控制台输出。您的对象数组是什么样子的?您能给我们展示一下用户的对象结构吗?console.log(this.props.users)显示了什么?您可能没有正确地将组件连接到存储,或者如果
    props.users
    是异步加载的,您可能试图访问尚未加载的数组中的条目。发布您的组件代码。请发布第一个控制台状态的控制台输出。您的对象数组是什么样子的?能否向我们展示用户对象结构?console.log(this.props.users)show是什么?您可能没有将组件正确连接到存储区,或者,如果异步加载了
    props.users
    ,则您可能试图访问尚未加载的数组中的条目。发布您的组件代码。但在同一点上,我可以用console.log(this.props.users)在console中列出整个数组@bobby您可以访问
    this.props.users.length
    ?@Bergi否我不能t@bobby你能
    console.log(JSON.stringify(this.props.users))
    ?我的猜测是,你的控制台日志实际上并不是来自你所认为的那一行came@bergi我这样做了,并在控制台中得到了结果…max有一个正确的答案,但在同一点上,我可以用console.log(this.props.users)在控制台中列出整个数组@bobby你能访问这个.props.users.length吗?@Bergi不行t@bobby你能
    console.log(JSON.stringify(this.props.users))
    ?我的猜测是,你的控制台日志实际上并不是来自你所认为的那一行came@bergi我这样做了,我在控制台中得到了结果…max有一个正确的答案我在reducer中有一个空数组,它也不工作,但第一个选项是你们说的works@bobby如果是这样的话,在获取用户之前,您可能会在某个位置覆盖用户的默认值。如何声明对象数组的默认值?如果我只是将arrayofObjects=[],当应用程序第一次呈现arrayofObjects.object.someProperty时,它将抛出一个错误,即它无法读取undefinedIt的属性很难定义嵌套很深的默认值。在这种情况下,从lodash获取
    \是一个很好的解决方案<代码>\uu0.get(arrayOfObjects,'object.someProperty','banana')