2016-11-28 95 views
-2

我有以下阵列对象:JS重组对象以提高属性

[ 
    { 
     "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" 
    } 
] 

我已经尝试过使用对象.MAP .keys .values一些变化,但未能得到一个很好的解决方案。

+0

你能分享这些变化? – Rajesh

回答

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);

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)

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);