Javascript 映射数组以获取特定值
我试图映射一个数组以获得一个特定的值,并将其输出到我的PodcastList组件中 我的json(红色下划线是我希望在PodcastList.js中查看的内容) 这是我的主页组件: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
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>
)
}