2015-07-03 26 views
2

我試圖刪除從一個js進一些不必要的評論之前,如果我嘗試這個去除一個JSON/JS資訊提供的所有JavaScript代碼的處理</p> <p>前處理

data = data.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, ' '); 
 
    console.log(data);

我得到的錯誤data.replace不是一個函數..這是因爲它仍然在對象格式?

我這樣做的原因是,存在進料

test test <script>console.log("some script")</script> more text

在我需要與此基因敲除在此不能加載處理之前剝離這一點數據

數據是一組json格式的數據。

var data = [ 
 
{ 
 
\t 'id': '1', 
 
\t 'firstName': 'fname1', 
 
\t 'lastName': 'lname2' 
 
\t 'text': 'Text' 
 
}, 
 
{ 
 
\t 'id': '2', 
 
\t 'firstName': 'fnam2', 
 
\t 'lastName': 'lname2' 
 
\t 'text': 'text text <script>console.log("some script")</script> text' 
 
}]

+0

你可以包括什麼'數據'是什麼? 「數據是一組JSON格式數據的」不利於d: – Jack

回答

1

這是正確的,你不能應用replace的對象。它必須是一個字符串,所以你應該通過所有的元素進行迭代,並適用replace相關領域

data.map(function (element) { 
    element.text = element.text 
     .replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, ' '); 
}) 
+0

爲什麼我會得到錯誤 的ReferenceError:因爲你還沒有定義的數據沒有被定義 data.map(函數(元素){ –

+0

'數據'在調用這個方法之前 –

0

簡單地刪除所有的標籤,你可以使用DOM方法的JavaScript提供:

var data = [ 
 
{ 
 
\t 'id': '1', 
 
\t 'firstName': 'fname1', 
 
\t 'lastName': 'lname2', 
 
\t 'text': 'Text' 
 
}, 
 
{ 
 
\t 'id': '2', 
 
\t 'firstName': 'fnam2', 
 
\t 'lastName': 'lname2', 
 
\t 'text': 'text text <script>console.log("some script")</'+'script> text' 
 
}]; 
 

 
var cleaned = data.map(function(item) { 
 
    var d = document.createElement('div'); 
 
    d.innerHTML = item.text; 
 
    // find all tags and strip them 
 
    var tags = d.getElementsByTagName('*'); 
 
    [].forEach.call(tags, function(tag) { 
 
    tag.parentNode.removeChild(tag); 
 
    }); 
 
    // save cleaned text 
 
    item.text = d.innerHTML; 
 
    return item; 
 
}); 
 

 
console.log(cleaned);