JavaScript如何将开发者薪资提取为单一数组?
如何从员工数组中提取所有开发人员的薪资到单一数组?
方法1:使用filter() + map()(推荐)
先通过filter()筛选出所有职位为developer的员工,再用map()提取每个员工的salary字段,直接得到单一数组:
const people = [ {name: "bob", age: 20, position: "developer", salary: 120_000}, {name: "susy", age: 26, position: "designer", salary: 140_000}, {name: "peter", age: 33, position: "developer", salary: 220_000}, {name: "cody", age: 51, position: "boss", salary: 400_000}, {name: "franklin", age: 22, position: "designer", salary: 150_000}, {name: "anna", age: 27, position: "developer", salary: 175_000}, {name: "justin", age: 35, position: "developer", salary: 230_000}, {name: "charlie", age: 23, position: "designer", salary: 120_000}, {name: "tony", age: 38, position: "designer", salary: 210_000}, {name: "ruth", age: 41, position: "developer", salary: 300_000} ]; function getDeveloperSalaries(array) { return array.filter(person => person.position === "developer") .map(developer => developer.salary); } const developerSalaries = getDeveloperSalaries(people); console.log(developerSalaries); // 输出: [120000, 220000, 175000, 230000, 300000]
方法2:修改你的循环代码
你之前的问题是每次循环都创建了新数组,只要提前初始化一个空数组,把每个薪资push进去就能得到单一数组:
function getDeveloperSalaries(array) { const developers = array.filter(person => person.position === "developer"); const salaries = []; // 初始化空数组 for (let i = 0; i < developers.length; i++) { salaries.push(developers[i].salary); // 将薪资添加到数组中 } return salaries; } const developerSalaries = getDeveloperSalaries(people); console.log(developerSalaries); // 输出: [120000, 220000, 175000, 230000, 300000]
方法3:使用reduce()一步完成
reduce()可以同时完成筛选和提取,适合想简化代码的场景:
function getDeveloperSalaries(array) { return array.reduce((salaries, person) => { if (person.position === "developer") { salaries.push(person.salary); } return salaries; }, []); // 初始值为空数组 } const developerSalaries = getDeveloperSalaries(people); console.log(developerSalaries); // 输出: [120000, 220000, 175000, 230000, 300000]
内容的提问来源于stack exchange,提问作者kewl
相关产品推荐
相关产品推荐

