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。。。?请明确指定您的输入和输出