简体   繁体   English

从节点路由中的json访问数组中的对象值

[英]Accessing object value in array from json in node route

How can access an object value in an array? 如何访问数组中的对象值? Specifically "namecase" value? 具体“名称”值? I have a ejs view looping in the array so that it can display all my object values. 我在数组中循环了一个ejs视图,以便它可以显示我的所有对象值。 I'm passing data through routes. 我通过路线传递数据。

//data.json
{
  "works": [{
    "company" : "Company 1",
    "projects": [{
      "namecase":"Projectname 1",
      "desc":"This is a project with fairies.",
      "img" : "/images/placeholder.jpg",
      "url" : "/" 
      },
      {
      "namecase":"Projectname 2",
      "desc":"This is a project with monsters.",
      "img" : "/images/placeholder.jpg",
      "url" : "/" 
      }]
      }

  ]

}

//index.js route

var appdata = require('../data.json');

router.get('/work', function(req, res) {
    var myProjects = [];
    appdata.works.forEach ( function (item){
//this is where I pull object from json
        myProjects = myProjects.concat(item.projects["namecase"]);
    });
  res.render('work', { 
    title: 'Work',
    projects: myProjects
  });
});

///ejs

    <% if (projects.length > 0) { %>
    <% for (i=0; i<projects.length; i++) { %>

    <span><%= projects["namecase"] %></span>


    <% }

What you want is to concat item.projects , not the namecase key as you're doing. 你想要的是连接item.projects ,而不是你正在做的namecase密钥。 Also, once you're in the works object's projects child object, you'll want to loop through the projects and then concat them, like so: 此外,一旦你进入了works对象的projects子对象,你就会想要循环遍历项目, 然后将它们连接起来,如下所示:

router.get('/work', function(req, res) {
  var myProjects = [];
  appdata.works.forEach(function(work) {
    // Loop through each project to prevent undefined indices from being concatenated
    work.projects.forEach(function(project) {
      myProjects = myProjects.concat(project);
    });
  });
  res.render('work', { 
    title: 'Work',
    projects: myProjects
  });
});

Doing so will return just the projects: 这样做只会返回项目:

[ { namecase: 'Projectname 1',
    desc: 'This is a project with fairies.',
    img: '/images/placeholder.jpg',
    url: '/' },
  { namecase: 'Projectname 2',
    desc: 'This is a project with monsters.',
    img: '/images/placeholder.jpg',
    url: '/' } ]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM