Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 根据匹配字符串对字符串数组进行排序_Javascript_String_Json_Search - Fatal编程技术网

Javascript 根据匹配字符串对字符串数组进行排序

Javascript 根据匹配字符串对字符串数组进行排序,javascript,string,json,search,Javascript,String,Json,Search,我有一个包含许多字符串的JSON对象。我还有一个匹配字符串。现在,我希望根据字符串与匹配字符串的匹配程度来排列字符串的对象 如何使用Javascript实现这一点 假设,我搜索了飞利浦SHM6110U耳机 搜索将获取以下结果 [ { "position": 12, "link": "http:\/\/www.talash.com\/buy-online-philips-shl5001-hi-fi-headphone-headband-headphone-i

我有一个包含许多字符串的JSON对象。我还有一个匹配字符串。现在,我希望根据字符串与匹配字符串的匹配程度来排列字符串的对象

如何使用Javascript实现这一点

假设,我搜索了飞利浦SHM6110U耳机

搜索将获取以下结果

[
    {
        "position": 12,
        "link": "http:\/\/www.talash.com\/buy-online-philips-shl5001-hi-fi-headphone-headband-headphone-india-product.html",
        "image": "http:\/\/staticus.talash.com\/product_images\/p\/092\/DM1573_1lg__52708_thumb.jpg",
        "prod": "Philips Shl5001 Hi Fi Headphone Headband Headphone",
        "price": "Rs. 1000"
    },
    {
        "position": 12,
        "link": "http:\/\/www.talash.com\/buy-online-philips-shl5000-hi-fi-headphone-headband-headphone-india-product.html",
        "image": "http:\/\/staticus.talash.com\/product_images\/n\/497\/DM1572_1lg__57945_thumb.jpg",
        "prod": "Philips Shl5000 Hi Fi Headphone Headband Headphone",
        "price": "Rs. 1030"
    }
]​
现在,我必须根据匹配字符串“飞利浦SHM6110U耳机”和JSON的
prod
值对它们进行排序


建议一个算法或示例源代码就可以了

您可以将比较函数传递给

var结果=[
{“立场”:12,
...
“产品”:“飞利浦Shl5001高保真耳机头戴式耳机”,
...
},
{“立场”:12,
...
“产品”:“飞利浦Shl5000高保真耳机头戴式耳机”,
...
}
]​;
结果.排序(函数(a,b){
返回a.prod

结果将是按obj.prod值排序的数组。

我最后使用了一些条件:-

  • 搜索结果和搜索查询的单个单词匹配
  • 结果和搜索查询完全匹配的额外积分
  • 与搜索结果总长度匹配的所有单词的长度部分
  • 如果搜索查询出现在索引小于搜索结果总长度一半的位置,则会获得额外积分
  • 用于进一步改进结果的价格过滤器

  • 这是最后一个

    请提供一个源数据结构的确切示例(字符串数组?键/字符串对象?)。而且,您必须提供关于“它们的匹配程度”的信息。以JSON的形式获取数据是否相关?解析它时有问题吗?或者你的问题到底是什么?你说的“JSON对象”是什么意思?你是说“数组”吗?(如果不是,“排列”的概念是如何工作的?)但是,我不想按字母顺序对数组排序。我只想根据它们之间的距离,根据搜索字符串,给它们一个权重,在比较函数中放入您喜欢的逻辑,以确定要返回的值。平等性比较是一个简单的例子,如果您愿意,可以使用更复杂的方法。
    var results = [
      {"position": 12,
        ...
       "prod": "Philips Shl5001 Hi Fi Headphone Headband Headphone",
        ...
      },
      {"position": 12,
        ...
       "prod": "Philips Shl5000 Hi Fi Headphone Headband Headphone",
        ...
      }
    ]​;
    
    results.sort(function(a, b) {
      return a.prod < b.prod? -1 : a.prod == b.prod? 0 : 1;
    });