0

Why can I not delete a object property with a dynamic route?

website I looked at: Accessing nested JavaScript objects and arrays by string path

Object.byString = function(o, s) {
    s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
    var a = s.split('.');
    for (var i = 0, n = a.length; i < n; ++i) {
        var k = a[i];
        if (k in o) {
            o = o[k];
        } else {
            return;
        }
    }
    return o;
}

    
var someObject = {
    'part1' : {
        'a':{
            'name': 'Part 1',
            'size': '20',
            'qty' : '50'
        },
        'b':{}
    },
    'part2' : {
        'name': 'Part 2',
        'size': '15',
        'qty' : '60'
    }
};

x = "name";

route = "part1.a."+x+"";


// this works not
delete Object.byString(someObject, route);
console.log(Object.byString(someObject, route));
//Returns: Part 1

// this works
delete someObject['part1']['a']['name'];
console.log(someObject['part1']['a']['name']);
//Returns: undefined
Tim
  • 19
  • 5

0 Answers0