组合键和值以添加对象

时间:2017-01-09 17:05:03

标签: object underscore.js

我需要在我的对象中添加一些预定义的属性(从数组中)。 例如。

var x = {"p":1};
var add_keys = ["p1", "p2", "p3"];
var add_vals = [ 10 ,  '',   20 ];

// simplest way, but not generic as add_keys use:
[x['p1'],x['p2'],x['p3']] = add_vals;  // but not need empty p2
// perhaps clean with _.omitBy(x, _.isNil);

所以这个函数解决了这个问题:

function obj_addByKeysVals(obj,keys,vals,canEmpty=false) {
  for (var i=0; i<vals.length;i++) {
    var val = vals[i];
    var key = keys[i];
    if (canEmpty||val) obj[key] = val;
  }
  return obj;
}


x = obj_addByKeysVals(x, ['p1','p2','p3'], add_vals);

我希望直接使用下划线执行 obj_addByKeysVals (例如,使用某种_.zip)。

1 个答案:

答案 0 :(得分:1)

您可以使用extendobject的组合:

var x = {"p":1};
var add_keys = ["p1", "p2", "p3"];
var add_vals = [ 10 ,  '',   20 ];

var result = _.extend(x, _.object(add_keys, add_vals));