Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从节点路由中的json访问数组中的对象值_Javascript_Node.js_Express_Ejs_Embedded Javascript - Fatal编程技术网

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

Javascript 从节点路由中的json访问数组中的对象值,javascript,node.js,express,ejs,embedded-javascript,Javascript,Node.js,Express,Ejs,Embedded Javascript,如何访问数组中的对象值?特别是“namecase”值?我在数组中有一个ejs视图循环,以便它可以显示我的所有对象值。我正在通过路由传递数据 //data.json { "works": [{ "company" : "Company 1", "projects": [{ "namecase":"Projectname 1", "desc":"This is a project with fairies.", "img" : "/images

如何访问数组中的对象值?特别是“namecase”值?我在数组中有一个ejs视图循环,以便它可以显示我的所有对象值。我正在通过路由传递数据

//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>


    <% }
//data.json
{
“作品”:[{
“公司”:“公司1”,
“项目”:[{
“名称案例”:“项目名称1”,
“描述”:“这是一个有仙女的项目。”,
“img”:“/images/placeholder.jpg”,
“url”:“/”
},
{
“名称案例”:“项目名称2”,
“描述”:“这是一个有怪物的项目。”,
“img”:“/images/placeholder.jpg”,
“url”:“/”
}]
}
]
}
//index.js路由
var appdata=require('../data.json');
路由器.get('/work',函数(req,res){
var myProjects=[];
appdata.works.forEach(函数(项){
//这就是我从json中提取对象的地方
myProjects=myProjects.concat(item.projects[“namecase]”);
});
res.render('work',{
标题:"工作",,
项目:myProjects
});
});
///ejs
0) { %>

您需要的是concat
项。项目
,而不是您正在执行的
namecase
键。此外,一旦您在
works
对象的
项目
子对象中,您将需要循环项目,然后对其进行concat,如下所示:

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
  });
});
这样做只会返回项目:

[ { 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: '/' } ]