代码之家  ›  专栏  ›  技术社区  ›  Radex

如何以函数方式修改对象的所有属性

  •  0
  • Radex  · 技术社区  · 7 年前

    我需要创建一个函数来创建一个具有 in 设置为 true ,函数应该创建一个新对象。

    香草JS怎么做?我可以用解构主义和最新的JS。

       const in = {
            ida:true,
            idb:false,
            idc:false,
            ide:true
        }
    

    想要的结果

    const out = {
        ida:true,
        idb:true,
        idc:true,
        ide:true
    }
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   J. Pichardo    7 年前

    好吧,你可以用 Object.keys 以及实现此目的的扩展运算符:

    const input = {
      ida: true,
      idb: false,
      idc: false,
      ide: true
    }
    
    const out = Object.keys(input).reduce((acc, key) => ({...acc, [key]: true}), {});
    
    console.log(out)
        2
  •  2
  •   Nina Scholz    7 年前

    你可以用一个新的对象映射所有的键 false 作为价值。稍后将它们指定给单个对象。

    const
        inO = { ida: true, idb: false, idc: false, ide: true },
        outO = Object.assign(...Object.keys(inO).map(k => ({ [k]: true })));
        
    console.log(outO);
        3
  •  0
  •   Sebastian Speitel    7 年前

    您可以使用for..in循环遍历对象的键:

    function setTrue(obj) {
      for (k in obj) obj[k] = true;
    }
    
    const o = {
      ida: true,
      idb: false,
      idc: false,
      ide: true
    }
    
    setTrue(o);
    console.log(o);