js重组对象以提升属性

时间:2016-11-28 14:30:31

标签: javascript

我有以下数组包含对象:

[
   {
        "timestamp_start":{"S":"2016-11-28T10:35:48.100Z"},
        "timestamp_stop":{"S":"2016-11-28T10:39:48.100Z"},
        "deviceId":{"S":"0"},
        "userId":{"S":"0"}
   }
]

S属性表示该值是字符串。我稍后不需要这些信息,并希望删除它,而是将值“提升”一级以获得以下数组:

[
   {
        "timestamp_start": "2016-11-28T10:35:48.100Z",
        "timestamp_stop": "2016-11-28T10:39:48.100Z",
        "deviceId": "0",
        "userId": "0"
   }
]

我已经使用Object .map .keys .values尝试了一些变体,但未能得到一个很好的解决方案。

3 个答案:

答案 0 :(得分:1)

使用Array#forEach并更新对象。



var data = [{
  "timestamp_start": {
    "S": "2016-11-28T10:35:48.100Z"
  },
  "timestamp_stop": {
    "S": "2016-11-28T10:39:48.100Z"
  },
  "deviceId": {
    "S": "0"
  },
  "userId": {
    "S": "0"
  }
}];

data.forEach(function(obj) {
  Object.keys(obj).forEach(function(k) {
    obj[k] = obj[k][Object.keys(obj[k])[0]]
  })
})

console.log(data);




答案 1 :(得分:0)

您可以使用map()reduce()来获得所需的结果。

var data = [{
  "timestamp_start": {
    "S": "2016-11-28T10:35:48.100Z"
  },
  "timestamp_stop": {
    "S": "2016-11-28T10:39:48.100Z"
  },
  "deviceId": {
    "S": "0"
  },
  "userId": {
    "S": "0"
  }
}]

var result = data.map(function(e) {
  return Object.keys(e).reduce(function(r, k) {
    r[k] = e[k].S
    return r;
  }, {})
})

console.log(result)

答案 2 :(得分:0)

您可以查找属性S并获取值。



var object = { timestamp_start: { S: "2016-11-28T10:35:48.100Z" }, timestamp_stop: { S: "2016-11-28T10:39:48.100Z" }, deviceId: { S: "0" }, userId: {S: "0" } };
    
Object.keys(object).forEach(function (k) {
    if ('S' in object[k]) {
       object[k] = object[k].S;
    }
});

console.log(object);