按关键字搜索JSON密钥

时间:2017-04-07 12:37:50

标签: javascript json node.js

我有一个像这样的JSON列表:

 mahela-7829899075.jpg

 C:\xampp\tmp\php286A.tmp

如果用户在框示例中输入{ "StatTrak™ AK-47 | Fire Serpent (Field-Tested)": 701, "StatTrak™ AK-47 | Fire Serpent (Minimal Wear)": 1050, "StatTrak™ AK-47 | Fire Serpent (Well-Worn)": 450.15, "StatTrak™ AK-47 | Fire Serpent (Factory New)": 3300, "AK-47 | Fire Serpent (Field-Tested)": 195.8, "StatTrak™ AK-47 | Fire Serpent (Battle-Scarred)": 369.58, "AK-47 | Fire Serpent (Factory New)": 750, } ,那么它只会返回所有ak fire serpent

以下是我尝试使用的代码:

ak fire serpents

它会分割用户消息并尝试找到它,但它现在会尝试按名称var itemWanted = 'ak fire serpent'; var message = itemWanted.split(" "); for(var price in prices){ var splitfast = price.split(" "); if(price.toLowerCase().includes(message[1].toLowerCase())){ if(splitfast[1].toLowerCase().includes(message[0].toLowerCase())){ console.log(price + ' - ' + prices[price]); } } } 进行搜索,但其中有~30个名称为fire的项目,所以我添加了第二部分检查武器类型的代码,但是它只返回fire个,因为它检查StatTrak所以最好的方法是什么,因为拆分似乎没有工作。

2 个答案:

答案 0 :(得分:0)

显然,我不知道你从哪里获得JSON文件,但是如果你有机会稍微改变JSON格式而不需要花费太多精力,我会尝试构建一下JSON结构#34;更聪明&#34 ;.

例如:

{
    "Weapon Type": {
       "StatTrak™ AK-47" : {
             "Fire Serpent": {
                 "(Field-Tested)": 1050,
                 "(Factory New)" : 50
             }
       }
       "AK-47" : 
             "Fire Serpent": {
                 "(Field-Tested)": 1050,
                 "(Factory New)" : 50
             }
        }
}

它可能只是帮助您以更直观的方式更顺畅地运行JSON文件。

答案 1 :(得分:0)

您可以轻松地运行对象的键,如下例所示,并查看是否找到匹配项:

var json = {
  'apple pear banana': 1,
  'apple peach banana': 2,
  'apple grape banana': 3,
  'apple pear peach': 4,
  'apple grape peach': 5,
}
var matches = 'peach grape'.split(' ');
var result = Object.keys( json ).filter(function( key ){
  return !!(matches.find(function( match ){
    return key.indexOf( match ) >= 0
  }));
});

console.log( result, result.map(key => json[key]) );