Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
使用NodeJS从json数组中查找项_Json_Node.js - Fatal编程技术网

使用NodeJS从json数组中查找项

使用NodeJS从json数组中查找项,json,node.js,Json,Node.js,我正在尝试从JSON数组中搜索特定项并返回这些项 result = { FF: { server: 'deskes.com', result: 'succes' }, { server: 'cleantarge.com', result: 'Failed' }, { server: 'fance34.com',

我正在尝试从JSON数组中搜索特定项并返回这些项

 result = {
      FF: {
        server: 'deskes.com',
        result: 'succes'
    
      },
         {
        server: 'cleantarge.com',
        result: 'Failed'
    
      },
         {
        server: 'fance34.com',
        result: 'success'
    
      },{
        server: 'deskes.com',
        result: 'Failed'
    
      },
    
    }
我有以下JSON数据。 我想基于服务器搜索项目

我用了密码

var arrFound = result.filter(function(item) {
    return item.server == 'deskes.com';
});

But getting TypeError: Object #<Object> has no method 'filter'

我相信问题在于json,它需要是一个数组

这是一个我已经测试过的代码示例,它运行良好

var result = [
  {
   server: 'deskes.com',
    result: 'succes'

  },
     {
    server: 'cleantarge.com',
    result: 'Failed'

  },
     {
    server: 'fance34.com',
    result: 'success'

  },{
    server: 'deskes.com',
    result: 'Failed'

  }
];

var arrFound = result.filter(function(item) {
  return item.server == 'deskes.com';
});

console.log(arrFound);

// Outputs: [ { server: 'deskes.com', result: 'succes' }, { server: 'deskes.com', result: 'Failed' } ]

filter
方法仅在数组上可用,看起来您是在对象上调用它(从外括号)。您可以通过循环键来解决此问题:

var arrFound = Object.keys(result).filter(function(key) {
    return result[key].server == 'deskes.com';
// to cast back from an array of keys to the object, with just the passing ones
}).reduce(function(obj, key){
    obj[key] = result[key];
    return obj;
}, {});;

您还可以使用ECMAScript 2015的箭头功能:

rta =  result.filter(it => it.server === 'deskes.com');    
守则:

var结果=[
{
服务器:“desks.com”,
结果:“成功”
},
{
服务器:'cleantarge.com',
结果:“失败”
},
{
服务器:'fance34.com',
结果:“成功”
},{
服务器:“desks.com”,
结果:“失败”
}
];
var rta=result.filter(it=>it.server==='desks.com');
控制台日志(rta);
/*
结果:
[
{
“服务器”:“desks.com”,
“结果”:“成功”
},
{
“服务器”:“desks.com”,
“结果”:“失败”
}
]
*/
rta =  result.filter(it => it.server === 'deskes.com');