Lodash pickAs - 在不同的键下从对象中选择属性到新的属性

时间:2018-03-29 17:08:33

标签: javascript lodash

有没有办法如何从对象中选择属性到不同键下的新对象?

E.g:

has_add_permission and not is_popup and
(not save_as or add) and can_save

2 个答案:

答案 0 :(得分:2)

您可以使用Array.reduce()Object.entries()一起创建pickAs()方法:



const a = {prop1: 'a', prop2: 'b', prop3: 'c'}

const pickAs = (obj, props) => 
  Object.entries(obj)
  .reduce((r, [k, v]) => {
    if(k in props) r[props[k]] = v;
  
    return r;
  }, {});
  
const result = pickAs(a, {prop1: 'first', prop3: 'second'});
console.log(result) // {first: 'a', second: 'c'}




答案 1 :(得分:0)

您可以使用lodash _.mapKeys方法在您从对象中选择密钥后重命名密钥。据我所知,没有方法可以同时做到这两点,但这很有效:



const a = {prop1: 'a', prop2: 'b', prop3: 'c'}

const result = _.mapKeys(_.pick(a, ["prop1", "prop3"]), (v, k) => k.endsWith("1") ? "first" : "second");
console.log(result);

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.5/lodash.min.js"></script>
&#13;
&#13;
&#13;

您希望使用适合您实际用例的函数替换mapKeys第二个参数。该函数使用两个参数调用:值和键,并应返回所需的新键。