我有一个从 mongoose find 方法返回的对象数组。但是它的格式如下:
var value = [{'value': {'year': 2018, 'month':3, 'count': 123}}];
如何将其转换为以下内容:
var value = [{'year': 2018, 'month':3, 'count': 123}];
我在下面尝试转换但仍然打印出原始格式。
var result = [];
result.push(value);
var arr = [];
Object.keys(result).forEach(function(item) {
arr.push(result[item]);
console.log(result[item].year); //undefined
console.log(result[item]['year']; //undefined
})
console.log(arr);
下面是获取方法。
function findStats(result, cb) {
monthly_order.find({})
.select('-_id')
.sort({
"_id.year": 1,
"_id.month": 1
})
.exec(function (err, result) {
if (err) {
console.log('Error find: ', err);
return cb(err);
}
if(!result){
return cb({'message':'No Order.'});
}else{
console.log(result);
return cb(null, result);
//var arr = result.map(x => x.value);
//console.log(arr);
//return cb(null, arr);
}
});
}
最佳答案
只需将原数组中每一项的.value
属性.map
到新数组即可:
var valueArr = [{'value': {'year': 2018, 'month':3, 'count': 123}}];
var newArr = valueArr.map(({ value }) => value);
console.log(newArr);
请注意,此处内存中仍然只有一个对象 - 对一个变量名的更改将导致对另一个变量名的更改。如果您想避免这种情况,请在 .map
回调中传播 value
对象:
var valueArr = [{'value': {'year': 2018, 'month':3, 'count': 123}}];
var newArr = valueArr.map(({ value }) => ({ ...value }));
console.log(newArr);
关于javascript - 如何在 Javascript 中访问对象数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735059/