JSFiddle - React, Tailwind, and code Playground

by John Allan

JavaScript

viewModel = (function () {
    var module;
    
    module = {};    
    
    var view = {
        'stuff': {
            'reblasts': [
                {
                    'guid': '1',
                    'liked': true
                },
                {
                    'guid': '2',
                    'liked': false
                }
            ]
        }
    };
    
    module.getReblast = function (index) {
        return view.stuff.reblasts[index];
    };
    
    module.updateArticle = function (path, matchProperty, update) {
        var node, i, l;
        
        function getNode(obj, path) {
            var node, pathArray;
            
            pathArray = path.split('.');
            shift = pathArray.shift();
            console.log(shift);
            
            if (pathArray.length > 0) {
                console.log('deeper');
                obj = obj[shift];
                node = getNode(obj, pathArray.join('.'));   
            } else {
                console.log('done', obj, obj[shift]);
                node = obj[shift];
            }
            
            return node;
        }
        
        node = getNode(view, path);
        
        for (i = 0, l = node.length; i < l; i++) {
            if (node[i][matchProperty] === update[matchProperty]) {
                node[i] = update;
                break;
            }
        }
    };
    
    return module;
    
}());

console.log(viewModel.getReblast(0).liked);
viewModel.updateArticle('stuff.reblasts', 'guid', {
    'guid': '1',
    'liked': false
});
console.log(viewModel.getReblast(0).liked);