Can';在javascript中,似乎无法使用点或数组表示法访问对象中的值

Can';在javascript中,似乎无法使用点或数组表示法访问对象中的值,javascript,arrays,object,Javascript,Arrays,Object,因此,我从外部api(omdbapi)获取数据,确切的数据如下所示,标题为Star: {"Search":[{"Title":"Star Wars: Episode IV - A New Hope","Year":"1977","imdbID":"tt0076759","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BNzVlY2MwMjktM2E4OS00Y2Y3LWE3ZjctYzhkZGM3YzA1ZWM2Xk

因此,我从外部api(omdbapi)获取数据,确切的数据如下所示,标题为Star:

{"Search":[{"Title":"Star Wars: Episode IV - A New Hope","Year":"1977","imdbID":"tt0076759","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BNzVlY2MwMjktM2E4OS00Y2Y3LWE3ZjctYzhkZGM3YzA1ZWM2XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_SX300.jpg"},{"Title":"Star Wars: Episode V - The Empire Strikes Back","Year":"1980","imdbID":"tt0080684","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BYmU1NDRjNDgtMzhiMi00NjZmLTg5NGItZDNiZjU5NTU4OTE0XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_SX300.jpg"},{"Title":"Star Wars: Episode VI - Return of the Jedi","Year":"1983","imdbID":"tt0086190","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BOWZlMjFiYzgtMTUzNC00Y2IzLTk1NTMtZmNhMTczNTk0ODk1XkEyXkFqcGdeQXVyNTAyODkwOQ@@._V1_SX300.jpg"},{"Title":"Star Wars: Episode VII - The Force Awakens","Year":"2015","imdbID":"tt2488496","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BOTAzODEzNDAzMl5BMl5BanBnXkFtZTgwMDU1MTgzNzE@._V1_SX300.jpg"},{"Title":"Star Wars: Episode I - The Phantom Menace","Year":"1999","imdbID":"tt0120915","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BYTRhNjcwNWQtMGJmMi00NmQyLWE2YzItODVmMTdjNWI0ZDA2XkEyXkFqcGdeQXVyNTAyODkwOQ@@._V1_SX300.jpg"},{"Title":"Star Wars: Episode III - Revenge of the Sith","Year":"2005","imdbID":"tt0121766","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BNTc4MTc3NTQ5OF5BMl5BanBnXkFtZTcwOTg0NjI4NA@@._V1_SX300.jpg"},{"Title":"Star Wars: Episode II - Attack of the Clones","Year":"2002","imdbID":"tt0121765","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BMDAzM2M0Y2UtZjRmZi00MzVlLTg4MjEtOTE3NzU5ZDVlMTU5XkEyXkFqcGdeQXVyNDUyOTg3Njg@._V1_SX300.jpg"},{"Title":"Star Trek","Year":"2009","imdbID":"tt0796366","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BMjE5NDQ5OTE4Ml5BMl5BanBnXkFtZTcwOTE3NDIzMw@@._V1_SX300.jpg"},{"Title":"Star Wars: Episode VIII - The Last Jedi","Year":"2017","imdbID":"tt2527336","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BMjQ1MzcxNjg4N15BMl5BanBnXkFtZTgwNzgwMjY4MzI@._V1_SX300.jpg"},{"Title":"Rogue One: A Star Wars Story","Year":"2016","imdbID":"tt3748528","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BMjEwMzMxODIzOV5BMl5BanBnXkFtZTgwNzg3OTAzMDI@._V1_SX300.jpg"}],"totalResults":"2895","Response":"True"}
我在react native中做这件事,这个叫做电影的对象被作为道具传递。代码如下:

const MoviesList = props => {

    return 
    <Text>
        {props.movies.Search.forEach((movie) => {
            movie.Title
        })}
    </Text>
}   
const MoviesList=props=>{
返回
{props.movies.Search.forEach((movie)=>{
电影,片名
})}
}   

我得到的只是
未定义的
,并且没有任何数据被呈现。

当您试图呈现子元素/组件时,您不能使用
forEach
,因为forEach实际上不返回任何新的内容,它只是在现有集合中循环。您可以在项目循环时对其进行更改,但不会创建或返回新集合

您应该改用
map

我不确定
文本是什么,比如如果它是您自己的组件或来自库,但是如果它是您自己的组件,并且您希望在该组件中呈现标题,您应该在
组件中包装您的循环,而不是将标题传递给

请参见下面的MoviesList.js

<div>

  {props.movies.Search.map((movie) => {
    return <Text title={movie.Title}/>
  })}

</div>

{props.movies.Search.map((movie)=>{
返回
})}
我为完整的代码做了一次修改

编辑

如果API的响应是以字符串而不是对象的形式返回,那么可以使用
JSON.parse(您的结果)
将字符串转换为对象


要查看结果是否实际上是一个字符串,您可以执行
您的\u results.split(“”)并查看是否返回数组。您还可以执行
console.log(键入您的\u结果)
。如果它实际上是一个字符串,
“string”
将被记录在控制台中。

创建一个代码段来显示问题。您可以添加使用此对象的代码部分吗?我按照上面提供的方式运行代码,效果很好。此时代码中是否有obj可用,或者
obj
是否被另一个值覆盖?我猜,问题出在您试图访问此代码的上下文中。您需要向我们提供此上下文。什么时候进入obj?谢谢。问题是,props.movies.Search似乎是未定义的,当我尝试映射时,每个角色都会被单独渲染,即使是Search之外的角色,
console.log(props.movies)
log有什么作用?如果未定义,则说明您没有正确传递道具。无论在何处渲染
MovieList
组件,都需要访问该对象。如果你看到我提供的代码沙盒,道具被传递,值被正确呈现。它返回完整的电影列表,包括搜索和响应。当我尝试访问返回未定义的搜索时,您可以分享响应的样子吗?我假设
Search
将对应于输入搜索。当我在网上尝试API时,它只显示了按标题或id搜索的选项。天哪,它工作正常。非常感谢您,祝您度过愉快的一天