代码之家  ›  专栏  ›  技术社区  ›  Varun Sharma

如何更新JSON对象中键的值?

  •  1
  • Varun Sharma  · 技术社区  · 7 年前

    我正在使用 . 我想重命名特定键的值。

    var users = [{
        "_id": { "$oid":"3426" },
        "name":"peeter"
    }, {
        "_id": { "$oid":"5a027" },
        "name":"ken"
    }, {
        "_id": { "$oid":"5999" },
        "name":"karmal"
    }];
     
    var index = _.find(users, function(o) { return o._id.$oid == '5999'; });
    console.log(index);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

    在上述输出中 console.log(index)

    期望输出

    {
        "_id": {
            "$oid": "5999"
        },
        "name": "karmal-Copy"
    }
    

    我只想添加副本与键(名称)值。

    4 回复  |  直到 7 年前
        1
  •  1
  •   Nina Scholz    7 年前

    您可以只更新找到的对象。

    var users = [{ _id: { $oid: "3426" }, name: "peeter" }, { _id: { $oid: "5a027" }, name:"ken" }, { _id: { $oid: "5999" }, name: "karmal" }],
        item = _.find(users, function(o) { return o._id.$oid == '5999'; });
    
    if (item) {               // check if item exists
        item.name += '-Copy'; // update property
    }
    console.log(users);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
        2
  •  0
  •   Novy axtavt    7 年前

    具有高阶函数的幂

    var users = [
        {"_id":{"$oid":"3426"},
        "name":"peeter"
        },
        {"_id":{"$oid":"5a027"},
        "name":"ken"
        },
        {"_id":{"$oid":"5999"},
        "name":"karmal"
        }
      ];
    
    var getSpecific$oid=function(oid){ 
        return function(obj) { return obj["_id"]["$oid"]===oid; };
      }
    
    var addExtensionInName=function(extension){ 
        return function(obj){ 
            var rObj = {};
            rObj["_id"]=obj["_id"]
            rObj["name"]=obj["name"] +"-"+extension;
            return rObj;
          };
      }
    
    var index=users.filter(getSpecific$oid("5999")).map(addExtensionInName("copy"))
    
        3
  •  -1
  •   Sascha Lois    7 年前

    for(var i = 0; i < users.length; i++) {
        if(users[i]._id.$oid == 5999) {
            users[i].name += "-Copy"; 
        }
    }
    
        4
  •  -1
  •   Akash Shrivastava    7 年前

    干得好:

    var users = [
      {"_id":{"$oid":"3426"},
      "name":"peeter"
      },
      {"_id":{"$oid":"5a027"},
      "name":"ken"
      },
      {"_id":{"$oid":"5999"},
      "name":"karmal"
      }
    ];
     
    var index = _.find(users, function(o) { 
        if(o._id.$oid == '5999'){
          o.name += '-Copy';
          return o._id.$oid == '5999'; 
        }
      });
    
    console.log(index);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>