JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0-beta.1/handlebars.min.js"></script>
<script id="template" type="text/x-template">
<table>
{{#each privileged_users}}
{{! using a block helper to print the details, first parameter is the context object and second parameter is key }}
{{#printUserDetails ../users this}}
<tr><td>{{title}} {{name}}</td></tr>
{{else}}
<tr><td>{{this}} details not available</td></tr>
{{/printUserDetails}}
{{/each}}
</table>
</script>
<div id="results"></div>
JavaScript
var data = {
privileged_users: [ "user1", "user2", "user4" ],
users: {
user1: { name: "N1", title: "Mr." },
user2: { name: "N2" },
user3: { name: "N3" }
}
};
Handlebars.registerHelper("printUserDetails", function(usersObj, currUser, options) {
if (usersObj && currUser) {
var context = usersObj[currUser];
if (context) {
// options contain the block as compiled function in "fn"
return options.fn(context);
}
}
// Printing the name of user in else
return options.inverse(currUser);
});
var template = Handlebars.compile(document.getElementById('template').innerHTML);
document.getElementById('results').innerHTML = template(data);