Javascript 如何使用handlebar.js中的值筛选此数组?
Javascript 如何使用handlebar.js中的值筛选此数组?,javascript,handlebars.js,Javascript,Handlebars.js,页面标题 {{{#每个#u当配置文件“性别”“男性”} {{ID}}。{{from}}{{gender}} {{/each_when} var json={ “简介”:[ {“ID”:1,“性别”:“男性”,“发件人”:“奥利维亚”}, {“ID”:2,“性别”:“男性”,“发件人”:“米根”}, {“ID”:3,“性别”:“女性,男性”,“发件人”:“亚伦”}, {“ID”:4,“性别”:“女性”,“发件人”:“亚伦”} ] }; 车把.注册表帮助器('each_when',功能(列表、k、v
页面标题
{{{#每个#u当配置文件“性别”“男性”}
{{ID}}。{{from}}{{gender}}
{{/each_when}
var json={
“简介”:[
{“ID”:1,“性别”:“男性”,“发件人”:“奥利维亚”},
{“ID”:2,“性别”:“男性”,“发件人”:“米根”},
{“ID”:3,“性别”:“女性,男性”,“发件人”:“亚伦”},
{“ID”:4,“性别”:“女性”,“发件人”:“亚伦”}
]
};
车把.注册表帮助器('each_when',功能(列表、k、v、选项){
log(参数);
var i,结果=“”;
对于(i=0;i
ID为3
的对象不会附加到结果中,因为您的助手正在筛选出性别属性不等于男性的对象。对象3的性别
是“女性,男性”
,因此它没有通过平等测试
如果要检查列表[i][k]
是否包含v
,则必须更新逻辑
var i, result = '', values;
for (i = 0; i < list.length; ++i) {
values = list[i][k].replace(/\s*,\s*/, ',').split(',');
if (values.indexOf(v) > -1) {
result += opts.fn(list[i]);
}
}
return result;
如果您不想为Aaron显示“雌雄”,这意味着您实际上不想渲染对象的gender
属性。相反,您应该将想要的文本硬编码到模板中:
{{ID}}. {{from}} male<br>
{{ID}。{{from}}男
感谢“76484”的回复。但是您的代码不起作用。@Rehaankkhan:我在编写解决方案时更改了几个变量名。我已将它们改回您原来的k
和v
。有关工作示例,请参见。
{{ID}}. {{from}} male<br>