ltre.js
Version:
Personal Javascript Libs Store
22 lines • 811 B
JavaScript
/**
* 对象多级key一键赋值
* @params 第1到(n-1)个参数按key由浅至深列出
* @param 第n个参数为要赋的任意类型值
* @example
* var o = {};
* o.multiLevelAssign('a', 'b', 123456); // {a:{b:123456}}
*/
Object.prototype.multiLevelAssign = function(){
if (arguments.length < 2) throw new Error('args are error, it must be used as multiLevelAssign(key1, [key2,...,keyn,] value)');
var value = arguments[arguments.length - 1];
var keys = Array.prototype.slice.call(arguments, 0, -1);
var curr = this;
keys.forEach(function(e, i, arr){
if (i == arr.length - 1) {
curr[e] = value;
} else if (!(e in curr) || typeof curr[e] != 'object') {
curr[e] = {};
}
curr = curr[e];
});
}