如何使用for循环遍历数组以获取对象元素的值?

时间:2016-01-25 18:53:14

标签: javascript arrays for-loop

我试图使用for循环遍历数组,以获取特定对象的元素。我只想要“标题”和“Id”的元素。但是,我似乎在某处出错了。

//My Array

 var newReleases=[
 {
  "id": 10774532
  "title":"Die Hard"
  "Genre": "thriller"
 },
 {
  "id": 10653296,
  "title":"Bad Boys", 
  "Genre": "thriller"
 }
 ]

 //My for loop

 function findId(title, id){
    for (var i=0; i < newReleases.length; i++){
        if (newReleases[i].id=== title || id){
            return newReleases[i]; 
        }
    }
    return null; 
}

console.log(findId(title, Id)

我希望它的工作方式类似于forEach函数:

videoAndTitlePairs = [];
newReleases.forEach(function (videos){
    videoAndTitlePairs.push({"id":videos.id, 'title':videos.title}); 
})

return videoAndTitlePairs; 

4 个答案:

答案 0 :(得分:2)

关闭,您的if条件有点偏离 - 特别是||部分:

if (newReleases[i].id=== title || newReleases[i].id === id){

您需要重新检查整个条件 - if x == 3 || x == 4 - 而不是if x == 3 || 4

完整代码:

function findId(title, id){
    for (var i=0; i < newReleases.length; i++){
        if (newReleases[i].id=== title || newReleases[i].id === id) {
            return newReleases[i]; 
        }
    } 
    return null; 
}

并称之为:

var movie = findId(10774532, 10774532);

答案 1 :(得分:1)

请参阅以下forEach循环的等效代码:

var newReleases=[
 {
  "id": 10774532,
  "title":"Die Hard",
  "Genre": "thriller"
 },
 {
  "id": 10653296,
  "title":"Bad Boys", 
  "Genre": "thriller"
 }
 ];

function findId(newReleases){
        var idAndTitlePairs = [];
        for (var i=0; i < newReleases.length; i++){
            idAndTitlePairs.push({"id":newReleases[i].id, 'title':newReleases[i].title}); 
        };
        return idAndTitlePairs; 
    }

console.log(findId(newReleases));

您也可以使用this comment创建等效代码,代码如下:

var idAndTitlePairs = newReleases.map(function(obj){
    return {'id': obj.id, 'title':obj.title}
});
console.log(idAndTitlePairs);

答案 2 :(得分:0)

在数组的第一个对象中,缺少逗号以分隔键值对以及if条件不正确并且在console.log的末尾缺少括号,请检查以下更正的代码。

 //My Array

 var newReleases=[
 {
  "id": 10774532,
  "name":"Die Hard",
  "Genre": "thriller"
 },
 {
  "id": 10653296,
  "name":"Bad Boys", 
  "Genre": "thriller"
 }
 ]

 //My for loop

 function findId(title, id){
    for (var i=0; i < newReleases.length; i++){
        if (newReleases[i].id === title || newReleases[i].id == id){
            return newReleases[i]; 
        }
    }
    return null; 
}

console.log(findId(10774532,10774532))

答案 3 :(得分:0)

newReleases[i].id=== title || id)只检查id是否已定义,这不是您想要的。试试newReleases[i].id=== title || newReleases[i].id] === id)