【问题标题】:Need help on searching for an object using Javascript在使用 Javascript 搜索对象时需要帮助
【发布时间】:2020-05-16 19:43:21
【问题描述】:

我正在尝试使用数组中可用对象列表中的单词进行搜索,并且它在所有对象中都可用,然后我应该将消息打印为“匹配”

var objects = [
  {
    "foo" : "shaik",
    "bar" : "sit"
  },
  {
    "foo" : "lorem",
    "bar" : "ipsum"
  },
  {
    "foo" : "dolor",
    "bar" : "shaik"
  }
];

var results = [];

var toSearch = "shaik";

for(var i=0; i<objects.length; i++) {
  for(key in objects[i]) {
    if(objects[i][key].indexOf(toSearch)!=-1) {
      results.push(objects[i]);
    }
  }
}

gs.log(JSON.stringify(results));

输出:

*** Script: [{"foo":"shaik","bar":"sit"},{"foo":"dolor","bar":"shaik"}]

到目前为止,使用上面的脚本我可以显示匹配的对象,但是如何检查它是否在所有对象中都可用,然后显示 Matched 作为结果

【问题讨论】:

标签: javascript arrays object


【解决方案1】:

应该这样做。

var objects = [
  {
    "foo" : "shaik",
    "bar" : "sit"
  },
  {
    "foo" : "lorem",
    "bar" : "ipsum"
  },
  {
    "foo" : "dolor",
    "bar" : "shaik"
  }
];

var results = [];

var toSearch = "shaik";

for(var i=0; i<objects.length; i++) {
  
    if(!(objects[i]['foo']==toSearch || objects[i]['bar']==toSearch)) {
      results.push(objects[i]);
  
  }
}

console.log(results);

【讨论】:

  • 我得到了同样的结果。我的要求是,如果 shaik 在所有对象中都不可用,那么我需要将 console.log 设置为不匹配,如果 shaik 在所有对象中都可用,那么我应该将日志控制台为匹配
【解决方案2】:

用户every 方法来检查。如果搜索词中存在所有对象(任何键),则打印'Matched'。

var objects = [
  {
    foo: "shaik",
    bar: "sit"
  },
  {
    random: "shaik",
    temp: "ipsum",
    some: "hello"
    
  },
  {
    foo: "dolor",
    bar: "shaik"
  }
];

var results = [];

var toSearch = "shaik";

if (objects.every((obj) => Object.values(obj).includes(toSearch))) {
  console.log("Matched");
} else {
  console.log("Not Matched");
}

【讨论】:

  • @Abdul,你只需要结果“匹配”还是不对?
  • 是的,但是根据您的代码,我们通过硬编码来查看 2 个对象,例如我在这里给出了 2 个对象,我可以对对象进行 n 个编号
  • @AbdulAzeez,你的意思是除了 foo 之外还有更多的道具,酒吧?我刚刚更新了任何数字属性的答案。这应该工作。
猜你喜欢
  • 2017-11-08
  • 2017-08-03
  • 2014-05-20
  • 2011-09-28
  • 1970-01-01
  • 2020-06-06
  • 2012-08-25
  • 2020-08-03
相关资源
最近更新 更多