Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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_Reactjs - Fatal编程技术网

Javascript 映射数组以获取特定值

Javascript 映射数组以获取特定值,javascript,reactjs,Javascript,Reactjs,我试图映射一个数组以获得一个特定的值,并将其输出到我的PodcastList组件中 我的json(红色下划线是我希望在PodcastList.js中查看的内容) 这是我的主页组件: import React, { Component } from 'react' import { fetchPopularPodcasts } from './api' import PodcastList from './PodcastList' export default class Home extend

我试图映射一个数组以获得一个特定的值,并将其输出到我的PodcastList组件中

我的json(红色下划线是我希望在PodcastList.js中查看的内容) 这是我的主页组件:

import React, { Component } from 'react'
import { fetchPopularPodcasts } from './api'
import PodcastList from './PodcastList'

export default class Home extends Component {

  state = {
    podcasts: [],
    loading: true,
  }

  async componentDidMount () {
    const podcasts = await fetchPopularPodcasts();
      this.setState({
            podcasts,
            loading: false,
        })
  }

  render() {
    const { podcasts } = this.state

    return (
      <div className='container'>
                        <PodcastList list={podcasts} />
      </div>
    );
  }
}

要获取包含每个数组项对象的label属性的数组,可以使用数组的方法:

请注意,由于属性“im:artist”的格式化方式(即使用冒号),您需要使用

另外,使用inspector确保列表实际上是一个数组

最后,对于您在播客列表中的案例:

const PodcastList = ({ list }) => {
    return (
        <div className='col-md-12'>
            {
                list.map(pod => {
                    return (
                        <div className='pod-box'>
                            pod['im:artist'].attributes.label 
                        </div>
                    )
                 })
            }
        </div>
    )
}
constpodcastlist=({list})=>{
返回(
{
list.map(pod=>{
返回(
pod['im:Artister'].attributes.label
)
})
}
)
}
这假设你所有的反应都是正确的,因为在那个领域,我不熟悉。(如果它仍然不起作用,我会调查你最里面的div是否需要花括号。)


另外,在重新评估代码时,您可能更愿意使用forEach,因为您并没有真正尝试创建映射数组;相反,您正在尝试访问每个数组元素的属性。

您的子组件将以与组件相同的方式进行设置

import React from 'react'
import { Link } from 'react-router-dom'
import slugify from 'slugify'

const default class PodcastList extends Component {

  _renderList = () => {
    let elem = this.props.list && this.props.list.length > 0
      (this.props.list.map((pod) => {
        <div className='pod-box'>{pod}</div>;
      )});
    return elem;
  }

  render() {
    return (
       <div className='col-md-12'>
        {this._renderList()}
       </div>
    )
  }
从“React”导入React
从“react router dom”导入{Link}
从“slugify”导入slugify
const默认类PodcastList扩展组件{
_renderList=()=>{
让elem=this.props.list&&this.props.list.length>0
(此.props.list.map((pod)=>{
{pod};
)});
返回元素;
}
render(){
返回(
{this.\u renderList()}
)
}

导出默认PodcastList;

您只是在尝试获取label属性中的值数组吗?或者您希望输出的具体外观是什么?不,这无助于理解该图像。您所说的“映射通过”是什么意思?如果您可以创建一个。如果您的数据都符合相同的结构,那么您可以创建
data.map(elem=>elem[“im:artist”].attributes.label)
,其中
elem
是每个外部对象,而
[“im:artist”].attributes.label
是您在每个对象上查找的值的固定路径现在我明白了!谢谢!:-)在类似于我的json的情况下,属性im:image包含一个数组?我如何访问它?@JonasAlvarson您将转到:pod['im:image'][index],其中index是表示数组中位置的数字。
let list = [ /* the contents included in your screenshot */ ]

let newList = list.map(pod => { 
    return pod['im:artist'].attributes.label 
})
const PodcastList = ({ list }) => {
    return (
        <div className='col-md-12'>
            {
                list.map(pod => {
                    return (
                        <div className='pod-box'>
                            pod['im:artist'].attributes.label 
                        </div>
                    )
                 })
            }
        </div>
    )
}
import React from 'react'
import { Link } from 'react-router-dom'
import slugify from 'slugify'

const default class PodcastList extends Component {

  _renderList = () => {
    let elem = this.props.list && this.props.list.length > 0
      (this.props.list.map((pod) => {
        <div className='pod-box'>{pod}</div>;
      )});
    return elem;
  }

  render() {
    return (
       <div className='col-md-12'>
        {this._renderList()}
       </div>
    )
  }