2016-09-09 8 views
-1

これは、渡されるオブジェクトの内容です:中括弧で囲まれた文字列を見つけてオブジェクト内の文字列を削除する方法はありますか?

var data = displayObj.data; 
itemHtml = $(displayObj.template).clone(); 
var i=0; 
var ele = itemHtml.find('[data-id]'); 
$(ele).attr('id',data[i].id); 
itemHtml.find('[data-conversation-id]').html('{data[i].id}'); 
itemHtml.find('[data-conversation-user-name]').html('{data[i].name}'); 
itemHtml.find('[data-conversation-preview]').html('{data[i].msg}');        
(data[i].notification > 0 ? itemHtml.find('[data-toggle-notify]').css('display', 'block'): itemHtml.find('[data-toggle-notify]').css('display', 'none')); 
itemHtml.find('[data-toggle-notify]').html('{data[i].notification}'); 

今、私はループため内のdivに追加さ に別の場所で同じページ内itemHtmlとしてオブジェクトを渡しています。追記前

var counter = 5; 
for(var i=0; i < counter;i++){ 
wrapper.append(itemHtml); 
} 

、検索が '{}'で囲まれたすべての文字列を検索するためになされなければならないので、彼らは代わりに、有効な値になるように を中括弧を削除しても、その周りの単一引用符。 ..

html.('{data[i].name}') 

上記

は、このように変更すると、今これが有効なvalue.Thisは私が私を助けるdo..Someoneしているよ何である

html.(data[i].name) 

答えて

0

回答が判明しましたかなり異なるように、答えの下部を参照してください。私はあなたが「オブジェクトに」によって何を意味するか正確にはわからない

を、これはあなたがここで練習することができ、かなりシンプルな正規表現のように思える:http://www.regexr.com/

を10

これは基本的に、これは非欲張りなファッションで}'(すなわちで終了し、すべての文字が続く'{持つすべての文字列にマッチするjavascriptの

const re = /'{(.*?)}'/g; 
const s = "html.('{data[i].name}') html.('{data[i].name}')"; 
console.log(s); 
const s2 = s.replace(re, '$1'); 
console.log(s2); 

でそれをやった例だろうmatch-anyセクションで可能な限り少数の文字と一致します(.*)。

この例では、すべての出現と一致する/gも使用しますが、必要な場合はgを削除してください。


あなたのjsfiddleを見て、私はいくつかの単純化が順調かもしれないと思います。

まず、var x.y = 'foo'は有効な構文ではありません。次に、データは文字列ですが、後で繰り返し処理すると、配列内の2つのオブジェクトとみなされます。私はdispayObjがどんなものなのか分かりませんが、固定された例でそれを削除しました。

私はあなたのデータ文字列を取ります(私はJSONであると仮定しているので、構文を修正しました)、それをjavascriptオブジェクトに解析します。次に、データを繰り返し処理し、jqueryでいくつかの要素を作成します。私はデータ属性を追加し、divの内容を値にします(それ以外の場合は表示されません)。更新jsfiddleで

var data = JSON.parse('[{"id":8,"name":"keren"},{"id":9,"name":"rose"}]'); 
var body = $('#body'); 

for(var i=0; i< data.length; i++){ 
    var dataItem = data[i]; 
    var conversationId = $('<div>' + dataItem.id + '</div>').data('conversation-id', dataItem.id); 
    var conversationUser = $('<div>' + dataItem.name + '</div>').data('conversation-user-name', dataItem.name); 
    var dataContainer = $('<div></div>').append(conversationId, conversationUser); 
    $('#body').append(dataContainer); 
} 

:マッチした文字列のためのhttps://jsfiddle.net/0cabq8rp/

+0

検索は、オブジェクト内で行われる必要があります。オブジェクトはitemHtmlです。あなたの答えは文字列を使って検索します。 – 112233

+0

一致させる必要がある文字列はオブジェクトのキーですか?おそらく、https://jsfiddle.net/を完全に人目を引くitemHtmlで作成してください。 displayObjを参照しているため、上記のコードは実行されません。 – dpwrussell

+0

ここです; s手品、https://jsfiddle.net/L1z1htxz/1/ – 112233

関連する問題