如何解决计算数组内的对象文字
嗨,我有一个简单的问题,我想计算从API获取结果时收到的结果数。 我正在使用OMDb API,因此结果如下:
[{ Title: 'Hangover',Year: '2014',imdbID: 'tt3653728',Type: 'movie',Poster:
'https://m.media-amazon.com/images/M/MV5BN2MzM2Y4NWYtYmUzNS00YWQ3LTkyYTUtOTdkY2I4YzVlMGM4XkEyXkFqcGdeQXVyMjkxNzQ1NDI@._V1_SX300.jpg' },{ Title: 'Our Colonial Hangover',imdbID: 'tt4132226',Poster: 'N/A' } ]
我只想知道数组中有多少个对象常量。我尝试使用Object.keys(data).length,但似乎我没有收到正确的信息。 这是快递:
app.post("/search",(req,res) => {
let search = req.body.userSrc;
Recent.findOne({
Title: search
},(err,foundData) => {
if (err || foundData == null) {
fetch("http://www.omdbapi.com/?s=" + search + "&apikey=b322e698")
.then(response => response.json())
.then(data => {
console.log("API RESPONSE");
console.log(data.Search);
res.render("index",{
result: data.Search
});
});
} else {
console.log("Found Local");
res.render("index",{
result: foundData
});
}
});
});
这是我的EJS:
<div class="col-md-12 pt-3 ">
<div class="row justify-content-center">
<% if(typeof(result) !== "undefined" ) {%>
<% if(Object.keys(result).length >1 ){ %>
<% result.forEach(result => { %>
<div class="col-xs-12 col-md-6 col-lg-3 p-2 m-2">
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="<%=result.Poster%>" alt="Card image cap">
<div class="card-body">
<p class="card-text"><%=result.Title%></p>
<a href="/search/<%=result.imdbID%>" class="btn btn-primary">More</a>
</div>
</div>
</div>
<%})}else{ %>
<div class="col-xs-12 col-md-6 col-lg-3 p-2 m-2">
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="<%=result.Poster%>" alt="Card image cap">
<div class="card-body">
<p class="card-text"><%=result.Title%></p>
<a href="/search/<%=result._id%>" class="btn btn-primary">More</a>
</div>
</div>
</div>
<%}}%>
</div>
我需要做的是,如果电影是在数据库中本地找到的,这意味着数组中将只有一个对象文字,并且如果没有本地数据,它将通过电影APi搜索该电影并给我超过1个结果。如果我有1个结果(在数据库中为本地)并在forEach方法中运行,则EJS给我错误。如果我知道只有一种结果,我可以使用,如果不是,则只能通过forEach运行。
对不起,但我不知道该怎么解释。
解决方法
array.length将为您提供返回数组中项目的长度。只需将数组替换为实际存储的任何变量名即可。length适用于数组,而不适用于对象……如果您想获取嵌套对象的数量,那会有些棘手。
,目前尚不清楚您想要什么。如果您想要返回的数组中的对象数,则与获取数组本身的长度一样简单。
let count = data.length;
如果想要数组中对象的对象文字数量:
let count = Object.keys(data[0]).length;
(其中data
是从API返回的数组)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。