Javascript 从键和值中删除类似文本并简化输出

Javascript 从键和值中删除类似文本并简化输出,javascript,parsing,string-parsing,Javascript,Parsing,String Parsing,你好,我需要做一个解析器来处理数据。我有这样的输入数据 http://epfl.ch/site/drupal/ -> Drupal, Apache, PHP 5, RedHat http://epfl.ch/site/drupal/a -> Drupal, Apache, PHP 5, RedHat http://epfl.ch/site/drupal/a/1 -> Drupal, Apache, PHP 5, RedHat htt

你好,我需要做一个解析器来处理数据。我有这样的输入数据

http://epfl.ch/site/drupal/           -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a         -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a/1      -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a/2      -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a/3/4   -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/b         -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/c         -> Drupal, Apache, PHP 5, RedHat, jQuery
http://epfl.ch/site/jml                 -> Joomla, Apache, PHP 4, jQuery
http://epfl.ch/site/jml/pdfs         -> PDF generator
http://epfl.ch/site                       -> Apache, PHP 5
http://epfl.ch/site/                     -> Apache, PHP 5
http://epfl.ch/site/drupal/          -> Drupal, RedHat
http://epfl.ch/site/drupal/c        -> jQuery
http://epfl.ch/site/jml                -> Joomla, PHP 4, jQuery
http://epfl.ch/site/jml/pdfs        -> PDF generator
需要这样输出

http://epfl.ch/site/drupal/           -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a         -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a/1      -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a/2      -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/a/3/4   -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/b         -> Drupal, Apache, PHP 5, RedHat
http://epfl.ch/site/drupal/c         -> Drupal, Apache, PHP 5, RedHat, jQuery
http://epfl.ch/site/jml                 -> Joomla, Apache, PHP 4, jQuery
http://epfl.ch/site/jml/pdfs         -> PDF generator
http://epfl.ch/site                       -> Apache, PHP 5
http://epfl.ch/site/                     -> Apache, PHP 5
http://epfl.ch/site/drupal/          -> Drupal, RedHat
http://epfl.ch/site/drupal/c        -> jQuery
http://epfl.ch/site/jml                -> Joomla, PHP 4, jQuery
http://epfl.ch/site/jml/pdfs        -> PDF generator

如何使用javascript实现这一点?

我假设您已经将数据作为js对象,因此我基于此创建了我的示例

var data = {
  'http://epfl.ch/site/drupal/' : 'Drupal, Apache, PHP 5, RedHat',
  'http://epfl.ch/site/drupal/a/1' : 'Drupal, Apache, PHP 5, RedHat',
  'http://epfl.ch/site/drupal/a/2' : 'Drupal, Apache, PHP 5, RedHat',
  'http://epfl.ch/site/drupal/a/3/4' : 'Drupal, Apache, PHP 5, RedHat',
  'http://epfl.ch/site/drupal/b' : 'Drupal, Apache, PHP 5, RedHat',
  'http://epfl.ch/site/drupal/c' : 'Drupal, Apache, PHP 5, RedHat, jQuery',
  'http://epfl.ch/site/jml' : 'Joomla, Apache, PHP 4, jQuery',
  'http://epfl.ch/site/jml/pdfs' : 'PDF generator',
  'http://epfl.ch/site/' : 'Apache, PHP 5'
}

var correctFormat = [
  {'http://epfl.ch/site/' : 'Apache, PHP 5'},
  {'http://epfl.ch/site/drupal/' : 'Drupal, RedHat'},
  {'http://epfl.ch/site/drupal/c' : 'jQuery'},
  {'http://epfl.ch/site/jml' : 'Joomla, PHP 4, jQuery'},
  {'http://epfl.ch/site/jml/pdfs' : 'PDF generator'}
];
我的最佳猜测是,为了过滤出类似的键和值,您必须以某种方式使用正则表达式,但我编写了一个示例函数,它使用
correctFormat
,过滤掉
数据中格式不正确的所有内容

function simplifyOutput(input, correctFormatMap) {
  var result = [];

  for ( var key in input ) {    
    correctFormatMap.forEach(function(format) {
      var correctKey = Object.keys(format)[0];

      if (key.split(correctKey).length === 2 && key.split(correctKey)[1] === "") {
        var formattedObj = {};
        formattedObj[correctKey] = format[correctKey];
        result.push(formattedObj);
      }
    });

  }
  return result;
}
这只是一个助手

function sortByKey(inputData) {
  return inputData.sort(function(a, b) {
    var aKey = Object.keys(a);
    var bKey = Object.keys(b);
    return aKey > bKey;
  });
}
这就是它的工作原理,但是现在它很大程度上依赖于硬编码格式的数据,基本上是在函数内部返回它,我不确定这是你需要的

console.log(sortByKey(simplifyOutput(data, correctFormat)));

输入数据是json。。。?请明确指定您的输入和输出