Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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_Arrays_Regex - Fatal编程技术网

Javascript 按标记拆分数组并删除所有类似元素

Javascript 按标记拆分数组并删除所有类似元素,javascript,arrays,regex,Javascript,Arrays,Regex,我有一些带有文本的html页面,需要按小写字母顺序输出标签b中的所有内部html。我只是个乞丐,所以不要太严格 我的代码在这里(文本只是示例): 现在我想:1)从标记abbr中为内部HTML保存大写字母;2) 从阵列中删除所有类似元素(如MAB) 我试图找到按标记拆分数组的方法,但我所做的只是: for(var i=0; i<allbold.length; i++){ labels[i] = allbold[i].innerHTML; } var searchTerm = ['abbr

我有一些带有文本的html页面,需要按小写字母顺序输出标签b中的所有内部html。我只是个乞丐,所以不要太严格

我的代码在这里(文本只是示例):

现在我想:1)从标记abbr中为内部HTML保存大写字母;2) 从阵列中删除所有类似元素(如MAB)

我试图找到按标记拆分数组的方法,但我所做的只是:

for(var i=0; i<allbold.length; i++){
  labels[i] = allbold[i].innerHTML;
}
var searchTerm = ['abbr'];
var abbr = [];
var keywordIndex;
$.each(labels, function(i) {
  $.each(searchTerm, function(j) {
    var rSearchTerm = new RegExp('\\b' + searchTerm[j] + '\\b','i');
    if (labels[i].match(rSearchTerm)) {
      keywordIndex = i;
      for(var j=0; j<labels.length; j++){
        abbr[i] = labels[i];
      }
    }
  });
});

for(var i=0;i使用mapping元素是为了所有大写字母,在您的注释之后,您需要什么

 var maplabels = [];
 for(var i=0; i<allbold.length; i++){
if (allbold[i].innerHTML != "Labels:") {
    if(maplabels.indexOf(allbold[i].innerHTML) == -1){
        maplabels.push(allbold[i].innerHTML);
        labels.push('<i>' + allbold[i].innerHTML.toUpperCase() + '</i>');
    }


}
var-maplabels=[];
对于(var i=0;iVanilla JS解决方案(不需要库,):


jQuery解决方案():


你期望的输出应该是什么?应该是:“降临节,博客,ftp,HTML,MABs,WWW”,但如果我再添加一个词“直到”,输出将是“ftp,HTML,WWW,MABs,直到,降临节,博客”。而我需要:“降临节,博客,ftp,HTML,MABs,直到,WWW”。除缩写外,所有内容都是小写。jquery可以在您的应用程序中使用吗?哇!这正是我想要的。我需要一些时间来理解您的代码中的所有内容。但非常感谢!@Ana jquery解决方案展示了jquery的一些功能(流畅的界面、HTML创建、自定义插件)再加上一些高级的CSS用法,在正确的位置添加逗号。有很多东西可以涉猎。
var allbold = document.querySelectorAll("b"),
    words = document.querySelector("#words"),
    labels = {}, i, word, keys, label;

// first, collect all words in an object (this eliminates duplicates)
for(i = 0; i < allbold.length; i++) {
    word = allbold[i].textContent.trim();
    if (word === 'Labels:') continue;
    labels[word.toLowerCase()] = word;
}

// then sort the object keys and output the words in original case
keys = Object.keys(labels).sort();
for(i = 0; i < keys.length; i++){
    label = document.createTextNode("SPAN");
    label.textContent = labels[keys[i]];
    words.appendChild(label);
    // add a comma if necessary
    if (i < keys.length - 1) {
        words.appendChild(document.createTextNode(", "));
    }
}
String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g, "");
};    
$(".content b").map(function () {
    return $("<span>", {text: $.trim(this.textContent)})[0];
}).unique(function () {
    return lCaseText(this);
}).sort(function (a, b) {
    return lCaseText(a) < lCaseText(b) ? -1 : 1;
}).appendTo("#words");
$.fn.extend({
    unique: function (keyFunc) {
        var keys = {};
        return this.map(function () {
            var key = keyFunc.apply(this);
            if (!keys.hasOwnProperty(key)) {
                keys[key] = true;
                return this;
            }
        });
    }
});

function lCaseText(element) {
    return element.textContent.toLowerCase();
}