【问题标题】:Pass certain parameters from an array of objects从对象数组中传递某些参数
【发布时间】:2016-03-29 20:57:15
【问题描述】:

我有一个对象数组。如果我做一个console.log,我可以看到这些对象数组。

[Object, Object, Object, Object,Object]
[0-4]
0:Object
    Name: Nikhil
    User_ID:123 
    admin:true
    read:false
    write:false
1:Object
    Name:andy
    User_ID:124
    admin:false
    read:true
    write:false
2:Object
    Name:Nik
    User_ID:125
    admin:false
    read:false
    write:true
3:Object
    Name:ranea
    User_ID:126
    admin:false
    read:false
    write:true 
4:Object
    Name:isha
    User_ID:127
    admin:false
    read:true
    write:false

现在,如果我执行 JSON.stringify,我会得到这个输出。

[{"Name":"Nikhil","User_ID":"123","admin":true,"read":false,"write":false},
{"Name":"andy","User_ID":"124","admin":false,"read":true,"write":false},
{"Name":"Nik","User_ID":"125","admin":false,"read":false,"write":true},         
{"Name":"ranea","User_ID":"126","admin":false,"read":false,"write":true},
{"Name":"isha","User_ID":"127","admin":false,"read":true,"write":false}]

我不想对所有参数进行字符串化,我只想对少数参数进行字符串化。例如我不想传递名称。我只想传递 User_ID,因为它是唯一的,以及 admin、read、write 属性。

如何使用 loadash 创建一个新的对象数组,然后将结果字符串化。 JSON.stringify 之后我的最终输出应该是这样的

[{"User_ID":"123","admin":true,"read":false,"write":false},
{"User_ID":"124","admin":false,"read":true,"write":false},
{"User_ID":"125","admin":false,"read":false,"write":true},         
{"User_ID":"126","admin":false,"read":false,"write":true},
{"User_ID":"127","admin":false,"read":true,"write":false}]

【问题讨论】:

    标签: javascript arrays json ajax object


    【解决方案1】:

    使用_.pick 应该是:

     var newArr = _.map(oldArray,
      function(item) {
        return _.pick(item, ['User_ID', 'admin', 'read', 'write']);
      });
    

    【讨论】:

    • 嗨@theodore-我的所有值都未定义。你能看看我在问题开头提到的控制台输出吗?
    • 您好@anjaligupte 查看我编辑的答案。我忘记了return 声明。
    【解决方案2】:

    您可以使用Array.map() 函数。

    var obj = [ { "Name": "Christophe", "Age": 42, "foo": "bar" }, { "Name": "Blah", "Age": 42, "foo": "foo2" }]
    var filtered = obj.map(function (element) {
        return {
            "Name": element.Name
        }
    });
    

    之后,filtered 包含您的对象以及您想要保留的键,您可以JSON.stringify 它。

    console.log(JSON.stringify(filtered));
    // [ {"Name": "Christophe"}, {"Name": "Blah"} ]
    

    【讨论】:

      【解决方案3】:

      你可以使用这个小函数返回 新数组。

      var arr = [{
        Name: "Nikhil",
        User_ID: "123",
        admin: "true",
        read: "false",
        write: "false"
      }, {
        Name: "andy",
        User_ID: "124",
        admin: "false",
        read: "true",
        write: "false"
      }];
      
      function returnArr(array) {
        var arrNew = arr;
        for (let in arrNew) {
          delete arrNew[let].Name;
        }
        return JSON.stringify(arrNew);
      }
      
      document.write(returnArr(arr)); // or console.log(returnArr(arr))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-23
        • 2013-04-08
        • 1970-01-01
        • 2016-08-06
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        相关资源
        最近更新 更多