如何获取数组属性中存在的值



我有一个来自响应的数组,我需要从每个对象/响应中获取 id Proprety 属性的 args 数组的 salary 属性中存在的值。如何实现这一目标?

 var arr = [
    [
        {
            id: "alex",
            idProperty: {
                args: [
                    {
                    name: "alex_name"
                    }, 
                    { 
                    salary: "16L" 
                    }
                ]
            }
        },
        {
            id: "john",
            idProperty: {
                args: [
                    {
                    name: "john_name"
                    }, 
                    { 
                    salary: "14L" 
                    }
                ]
            }
        }
   ]   
 ];

编辑:感谢每个人为上述查询提供的所有答案,但如果结构为:

案例 1 :

var arr = {
            [
                id: "alex",
                idProperty: {
                    args: [
                        {
                        name: "alex_name"
                        }, 
                        { 
                        salary: "16L" 
                        }
                    ]
                }
            ],
            [
                id: "john",
                idProperty: {
                    args: [
                        {
                        name: "john_name"
                        }, 
                        { 
                        salary: "14L" 
                        }
                    ]
                }
            ]
     };

案例 - 2

var arr = [
                {
                    id: "alex",
                    idProperty: {
                        args: [
                            {
                            name: "alex_name"
                            }, 
                            { 
                            salary: "16L" 
                            }
                        ]
                    }
                },
                {
                    id: "john",
                    idProperty: {
                        args: [
                            {
                            name: "john_name"
                            }, 
                            { 
                            salary: "14L" 
                            }
                        ]
                    }
                }
         ];

我很抱歉问这是否如此简单,因为我真的是反应本机和 java 脚本的新手,并且对各种场景感到困惑。

Extract the 'idProperty' Object and then iterate over the args array in it

var arr = [
    [
        {
            id: "alex",
            idProperty: {
                args: [
                    {
                    name: "alex_name"
                    }, 
                    { 
                    salary: "16L" 
                    }
                ]
            }
        },
        {
            id: "john",
            idProperty: {
                args: [
                    {
                    name: "john_name"
                    }, 
                    { 
                    salary: "14L" 
                    }
                ]
            }
        }
   ]   
 ];
const accu = [];
const output = arr[0].forEach(({idProperty}) => {
    idProperty.args.forEach(({salary}) => {
        if(salary)accu.push(salary);
    });
 });
 console.log(accu);

嗨,

您可以尝试以下方法-

var newarr = arr[0];
for(var i=0; i<newarr.length; i++)
{
    var salValue = newarr[i].idProperty.args[1].salary
    console.log('Salary value :' + salValue);
}

随机尝试了很长时间后,我得到了案例 2 的答案

const ids = array.map( a => return a.map(obj => obj.idProperty.args[1].salary));
但是在这一点上,

我无法在这一点上得到答案,obj.idProperty.args[1].salary不使用arg[1],就像安迪使用lodash一样。

您可以使用 for

var salaries
for(var i = 0; i <arr.length; i++){
   salaries[arr[i].id] = arr.idProperty.args.salary;
}

你会有这样的东西:

console.log(salaries);
[
'alex':'16L',
'john':'14L'
]

更新

_.each(arr, function (value, key) {
      salaries[value.id] = _.find(value.idProperty.args, function(o) { return o.salary != undefined; }).salary;  
});

map嵌套数组,并在每个对象的 args 数组中find薪水对象。这将返回一个工资数字数组。我使用了find而不是访问 args 数组的第二个元素,以防 salary 对象并不总是第二个元素,并且某些对象解构。

var arr = [[{"id":"alex","idProperty":{"args":[{"name":"alex_name"},{"salary":"16L"}]}},{"id":"john","idProperty":{"args":[{"name":"john_name"},{"salary":"14L"}]}}]];
// `map` over the inner array, destructure the args array from each object
const salaries = arr[0].map(({ idProperty: { args } }) =>
  // find the object in the args array that has the salary key
  // and return its salary value
  args.find(obj => Object.keys(obj)[0] === 'salary').salary
);
console.log(salaries);

相关内容

  • 没有找到相关文章