我有一个从猫鼬查找方法返回的对象数组。但是,其格式如下:
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);
}
});
}
答案 0 :(得分:3)
只需将原始数组中每个项目的.value
属性var valueArr = [{'value': {'year': 2018, 'month':3, 'count': 123}}];
var newArr = valueArr.map(({ value }) => value);
console.log(newArr);
更改为新数组:
value
请注意,此处您在内存中仍将只有一个对象-对一个变量名的更改将导致对另一变量名的更改。如果要避免这种情况,请在.map
回调中传播 var valueArr = [{'value': {'year': 2018, 'month':3, 'count': 123}}];
var newArr = valueArr.map(({ value }) => ({ ...value }));
console.log(newArr);
对象:
{{1}}
答案 1 :(得分:1)
您正在寻求以相同的方式修改数组的每个元素。这是.map()
的用例。
var value = [{'value': {'year': 2018, 'month':3, 'count': 123}}];
var result = value.map(x => x.value); //For each item (x), get the "value" property
console.log(result);
您问题中的代码正在返回undefined
,因为result[item]
涉及到此:
{'value': {'year': 2018, 'month':3, 'count': 123}}
如您所见,要访问year
属性,您必须先访问value
属性:
result[item]["value"]["year"]
答案 2 :(得分:0)
遍历数组,将对象的值推送到新数组
var value = [{
'value': {
'year': 2018,
'month': 3,
'count': 123
}
}];
let newVal = [];
value.forEach(function(item) {
for (let keys in item) {
newVal.push(item[keys])
}
})
console.log(newVal)
How can I convert it to below: var value = [{'year': 2018, 'month':3, 'count': 123}];
答案 3 :(得分:0)
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
print("hi")