如何找到用花括号括起来的字符串并将其删除到对象中?

时间:2016-09-09 02:13:45

标签: jquery

这是要传递的对象内容:

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}');
  

现在我将对象作为itemHtml传递到同一页面的其他位置   被附加到 for loop 中的div。

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

在追加之前,必须进行搜索以搜索所有附带的字符串   '{}'因此删除括号以及它周围的单引号   他们将成为有效的价值。

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

上面要改为这个,现在这是一个有效的价值。这就是我要做的事。有人帮我..

html.(data[i].name)

1 个答案:

答案 0 :(得分:0)

答案结果非常不同,请参阅答案的底部:

我不完全确定“在一个对象中”是什么意思,但这似乎是一个非常简单的正则表达式,你可以在这里练习:http://www.regexr.com/

这是在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);

基本上,这匹配所有字符串'{后跟任何字符,以非贪婪的方式终止}'(即匹配任意部分中匹配尽可能少的字符,{ {1}})。

在该示例中,我还使用了.*来匹配所有匹配项,但如果您只需要一个,则只需删除/g

看过你的jsfiddle,我认为可能会有一些简化。

首先,您无法执行g,这是无效的语法。其次,你的数据是一个字符串,但是当你稍后迭代它时,我认为你认为它是一个数组中的两个对象。我不知道dispayObj究竟是什么,但我已经在我的固定示例中删除了它。

我拿你的数据字符串(我假设它是JSON,所以我更正了语法)并将其解析为javascript对象。然后我迭代数据并使用jquery创建一些元素。我添加数据属性,并使div的内容成为值(否则没有什么可看的)。

var x.y = 'foo'

在更新的jsfiddle中:https://jsfiddle.net/0cabq8rp/