繁体   English   中英

如何在Javascript中访问对象数组值

[英]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()解决方案 在此处输入图片说明

原始输出 在此处输入图片说明

只是.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM