首页 > 解决方案 > 对象数组的操作

问题描述

如何操作特定对象?,这是我的例子。

    "lead_tags": [{
        "tag_id": 8616,
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 2147483647,
        "user_tags": null
    }, {
        "tag_id": 8656,
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 2147483647,
        "user_tags": null
    }, {
        "tag_id": 8742,
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 1249,
        "user_tags": {
            "user_tag_id": 1249,
            "user_id": 622,
            "tag_name": "Testtesttest"
        }   }, {
        "tag_id": 8767,
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 1262,
        "user_tags": {
            "user_tag_id": 1262,
            "user_id": 622,
            "tag_name": "t"
        }   }]

首先我需要过滤所有等于null

我使用过滤器不返回 user_tags 的值:null

var lead_tags = [{
        "tag_id": 8616,
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 2147483647,
        "user_tags": null
    }, {
        "tag_id": 8656,
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 2147483647,
        "user_tags": null
    }, {
     
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 1249,
        "user_tags": {
            "user_tag_id": 1249,
            "user_id": 622,
            "tag_name": "Testtesttest",
            "tag_id": 8742
        }   }, {
       
        "user_id": 622,
        "tag_name": null,
        "tag_description": null,
        "user_tag_id": 1262,
        "user_tags": {
            "user_tag_id": 1262,
            "user_id": 622,
            "tag_name": "t",
            "tag_id": 8767
        }   }];
        
        
        
 var filter = _.filter(lead_tags, (data, index) => {
   return data.user_tags != null;
 });


console.log(filter);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

现在我需要在开始时获取 tag_id 并返回数据如下所示

"lead_tags": [{

    "user_id": 622,
    "tag_name": null,
    "tag_description": null,
    "user_tag_id": 1249,
    "user_tags": {
        "user_tag_id": 1249,
        "user_id": 622,
        "tag_name": "Testtesttest",
        "tag_id": 8742
    }
}, {

    "user_id": 622,
    "tag_name": null,
    "tag_description": null,
    "user_tag_id": 1262,
    "user_tags": {
        "user_tag_id": 1262,
        "user_id": 622,
        "tag_name": "t",
        "tag_id": 8767
    }
}]

我希望你能帮助我处理数据。

标签: javascriptarrayslodashdata-manipulation

解决方案


希望这个作品

var lead_tags = [{
    "tag_id": 8616,
    "user_id": 622,
    "tag_name": null,
    "tag_description": null,
    "user_tag_id": 2147483647,
    "user_tags": null
}, {
    "tag_id": 8656,
    "user_id": 622,
    "tag_name": null,
    "tag_description": null,
    "user_tag_id": 2147483647,
    "user_tags": null
}, {

    "user_id": 622,
    "tag_name": null,
    "tag_description": null,
    "user_tag_id": 1249,
    "user_tags": {
        "user_tag_id": 1249,
        "user_id": 622,
        "tag_name": "Testtesttest",
        "tag_id": 8742
    }   }, {

    "user_id": 622,
    "tag_name": null,
    "tag_description": null,
    "user_tag_id": 1262,
    "user_tags": {
        "user_tag_id": 1262,
        "user_id": 622,
        "tag_name": "t",
        "tag_id": 8767
    }   }];



 var filter = lead_tags.filter(data => data.user_tags != null);
 let result = [];
   filter.forEach(el => {
      result = [
        ...result,
        {
          tag_id: el['user_tags']['tag_id'],
          user_id: el['user_id'],
          ...el,
         }
      ]
   });
   console.log(result);



const result2 = filter.reduce((acc, curr) => {
     return acc.concat({
          tag_id: curr['user_tags']['tag_id'],
          user_id: curr['user_id'],
          ...curr,
         })}, []);
   console.log(result2)

推荐阅读