从数组中拆分出对象属性和值[重复]

Posted

技术标签:

【中文标题】从数组中拆分出对象属性和值[重复]【英文标题】:split out object property and values from an array [duplicate] 【发布时间】:2015-06-17 04:43:26 【问题描述】:

来自这个 json 数组


    "result": [
        
            "id": "1",
            "name": "John",
            "type": "B",
            "score":"passed"
        ,
        
            "id": "2",
            "name": "Alice",
            "type": "A",
            "score":"failed"
        

    ]

如何拆分一些字段并变成这样的东西


    "result": [
        
            "id": "1",
            "type": "B",
        ,
        
            "id": "2",
            "type": "A",
        

    ]

我不想在我的情况下使用拼接,上面只是示例代码。

【问题讨论】:

您发布的字符串不是有效的 JSON。 @Pointy 更新了我的问题,我不想删除,上面的代码只是示例代码。 @thefourtheye 抱歉更新了我的问题。 你是什么意思,“只是示例代码”?如果您不能提出明确的问题,您希望如何获得帮助?上面(莫名其妙的编辑)列表之间的唯一区别是第二个中的对象缺少第一个中存在的两个属性。 @Pointy 只是不要使用删除,因为我只需要很少的字段,在我的情况下删除是不好的。 【参考方案1】:

试试这个:

var input = 
    "result": [
        
            "id": "1",
            "name": "John",
            "type": "B",
            "score":"passed"
        ,
        
            "id": "2",
            "name": "Alice",
            "type": "A",
            "score":"failed"
        

    ]
;
var output = 
    result: input.result.map(function(item) 
       return 
          id: item.id,
          type: item.type
       ;
    )

【讨论】:

结果不需要"" @JamesLemon 不,您不需要引号。 如果我只想要数组怎么办?丢弃结果键? @JamesLemon 然后使用var output = input.result.map(function(item) ... ); @JamesLemon 如果您不使用密钥,那么您将无法使用对象,它会起作用,请查看我的评论。【参考方案2】:

这样试试

   var json = 
   "result": [
           "id": "1",
           "name": "John",
           "type": "B",
           "score": "passed"
       , 
           "id": "2",
           "name": "Alice",
           "type": "A",
           "score": "failed"
       

   ]
   ;

   json.result.forEach(function(item) 
   delete item.name;
   delete item.score;
   );

   console.log(json);

【讨论】:

谢谢,这也有效!【参考方案3】:

遍历数组并删除年龄属性

var json = [
    "name":"john",
     "age":"30",
     "gender":"male",
    "name":"Alice",
     "age":"20",
     "gender":"female"

];
json.forEach(function(x)
delete x['age'];
)

【讨论】:

简单而有效的解决方案,很好。

以上是关于从数组中拆分出对象属性和值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将数组拆分为按对象属性分组的 2 个数组 [重复]

将两个数组(键和值)合并为一个对象[重复]

与参数匹配时返回对象的键和值[重复]

使用javascript删除与对象的另一个键和值对相对应的对象数组中的重复项

Javascript映射函数:向对象添加新键和值[重复]

如何从jquery中的给定对象数组中打印用户名[重复]