我只是根据已经拥有的一些类似代码制作的,它似乎可以工作:
Object.byString = function(o, s) { s = s.replace(/[(w+)]/g, '.'); // convert indexes to properties s = s.replace(/^./, '');// strip a leading dot 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;}
用法::
Object.byString(someObj, 'part3[0].name');
编辑一些人已经注意到,如果传递的字符串最左边的索引与对象内正确嵌套的条目不对应,则此代码将引发错误。这是一个有效的问题,但是IMHO最好try / catch在调用时使用块来解决,而不是让此函数静默返回undefined无效索引。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)