我有一个来自响应的数组,我需要从每个对象/响应中获取 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);