如何删除一部分htmlparse?

How to delete a part of the htmlparse?

我制作了一个网页的 htmlparse,我得到了一个包含以下块的页面的 DOM:

 { raw: 'td',
   data: 'td',
   type: 'tag',
   name: 'td',
   children: [ { raw: '600', data: '600', type: 'text' } ] },

如何删除该 htmlparse 的所有类型 "text"? 谢谢

如果您想删除任何带有文本类型的子项,只需遍历所有子项并使用 array.splice 删除一次带有文本类型的子项。

var output = document.getElementById('output'),
    htmlParse = { raw: 'td',
                     data: 'td',
                     type: 'tag',
                     name: 'td',
                     children: [
                       { raw: '600', data: '600', type: 'text' },
                       { raw: '100', data: '100', type: 'num' }
                     ] 
                    };

for(var i = 0; i < htmlParse.children.length; i++) {
  if (htmlParse.children[i].type === "text") {
    htmlParse.children.splice(i, 1);
  } 
}
output.innerHTML = JSON.stringify(htmlParse);
console.log(htmlParse);
<div id="output"></div>

如果你想递归地删除所有文本节点,你可以这样做:

var _ = require('underscore');
var deleteText = function(node) {
    if (!node.children || node.children.length === 0) {
        return;
    }

    // Exclude text nodes
    node.children = _.filter(node.children, function(child) {
        return child.type !== 'text';
    });

    // Recurse over child nodes
    _.each(node.children, deleteText);
};

deleteTextNodes(parsed);