[英]How to access object array values in Javascript
我有一个从猫鼬查找方法返回的对象数组。 但是,其格式如下:
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);
}
});
}
只是.map
的.value
原始数组到新阵列中每一个项目的性质:
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);
您正在寻找以相同的方式修改数组的每个元素。 这是.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"]
遍历数组,将对象的值推送到新数组
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}];
var value = [{'value': {'year': 2018, 'month':3, 'count': 123}}]; var result = []; value.map(function(val,i){ for(var j in val){ result.push(val[j]) } })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.