为了账号安全,请及时绑定邮箱和手机立即绑定

js怎么将下面的函数简化

js怎么将下面的函数简化

回首忆惘然 2019-03-06 13:14:14
function mergeJsonObject(jsonObj1, jsonObj2, jsonObj3, jsonObj4, jsonObj5) {    let resultJsonObject = {};        function jsonObj(jsonObj) {              for (let attr in jsonObj) {                   resultJsonObject[attr] = jsonObj[attr];                   }              }        jsonObj(jsonObj1);        jsonObj(jsonObj2);        jsonObj(jsonObj3);        jsonObj(jsonObj4);        jsonObj(jsonObj5);        return resultJsonObject;  }  可以用arguments吗,传入参数个数不固定
查看完整描述

8 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

function mergeJsonObject(...args) {

    let resultJsonObject = {};


        function jsonObj(jsonObj) {

              for (let attr in jsonObj) {

                   resultJsonObject[attr] = jsonObj[attr];

                   }

              }

        args.forEach(jsonObj)

        return resultJsonObject;

  }


查看完整回答
反对 回复 2019-03-22
?
精慕HU

TA贡献1845条经验 获得超8个赞

function mergeJsonObject(...jsonObjs) {

    let resultJsonObject = {};

        

        jsonObjs.forEach(function(jsonObj) {

              for (let attr in jsonObj) {

                   resultJsonObject[attr] = jsonObj[attr];

              }

        })

        return resultJsonObject;

  }

更简化一点的,直接


Object.assign({}, jsonObj1, jsonObj2)


查看完整回答
反对 回复 2019-03-22
?
临摹微笑

TA贡献1982条经验 获得超2个赞

看以什么规范,如果 ES6 的话可以:


function merge(...jsons) {

  return jsons.reduce((memo, json) => {

    return Object.assign(memo, json);

  }, {});

}


查看完整回答
反对 回复 2019-03-22
?
慕容森

TA贡献1853条经验 获得超18个赞

function mergeJsonObject(...args) {

    let resultJsonObject = {}

    args.map(function(val){

        Object.assign(resultJsonObject, val)        

    })

    return resultJsonObject

}


查看完整回答
反对 回复 2019-03-22
?
PIPIONE

TA贡献1829条经验 获得超9个赞

function mergeJsonObject(jsonObj1, jsonObj2, jsonObj3, jsonObj4, jsonObj5) {

  let resultJsonObject = {}; 

  let allJson=arguments;

    for(let index in allJson){

      for(let attr in allJson[index]){

        resultJsonObject[attr] = allJson[index][attr];

        }

    }

    return resultJsonObject;

  }


查看完整回答
反对 回复 2019-03-22
?
慕仙森

TA贡献1827条经验 获得超7个赞

例子参考一下,看看是不是你想要的


var aa = function(){


for (var i=0; i<arguments.length; i++){

    if (typeof (arguments[i]) == "object"){

        console.log(arguments[i])

    }

}

}


查看完整回答
反对 回复 2019-03-22
?
HUWWW

TA贡献1874条经验 获得超12个赞

同属性覆盖与否的问题没有解决


const mereJsons = () {

    const args = [...arguments];

    return args.reduce((prev, current) => {

      for(let key in current){

        prev[key] = current[key];

      }

      return prev;

    });

}


查看完整回答
反对 回复 2019-03-22
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

function merge() {

    var args = [];

    for (var _i = 0; _i < arguments.length; _i++) {

        args[_i] = arguments[_i];

    }

    var merged = {};

    function generateObject(target, object) {

        if (target === void 0) { target = {}; }

        for (var key in object) {

            if (object.hasOwnProperty(key)) {

                target[key] = object[key];

            }

        }

        return target;

    }

    for (var i = 0; i < args.length; i++) {

        var arg = args[i];

        if (arg) {

            if (isArray(arg)) {

                for (var i_1 = 0; i_1 < arg.length; i_1++) {

                    var argItem = arg[i_1];

                    if (isPlainObject(argItem)) {

                        merged = generateObject(merged, argItem);

                    }

                    else if (!isDate(argItem)) {

                        merged[argItem] = argItem;

                    }

                }

            }

            else if (isPlainObject(arg)) {

                merged = generateObject(merged, arg);

            }

            else if (isString(arg) || isNumber(arg)) {

                merged[arg] = arg;

            }

        }

    }

    return merged;

}


查看完整回答
反对 回复 2019-03-22
  • 8 回答
  • 0 关注
  • 677 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信