过滤所有键的数组的javascript对象

我是 JavaScript 新手。假设我有以下数组对象


const object1 = {

  name: ['David', 'Juan', 'Simon', 'Lukas'],

  age: [41, 22, 33, 50],

  salary: [100, 80, 120, 150]

};

我想创建一个新对象来过滤比某个值(例如 30 岁)大的人的数据。我正在寻找过滤器,Object.fromEntries,Object.entries,但我找不到可能的解决方案。结果应该是


NewObject {

  name: Array['David', 'Simon', 'Lukas'],

  age: Array[41, 33, 50],

  salary: Array[100, 120, 150]

};

感谢您的任何建议


RISEBY
浏览 103回答 3
3回答

慕侠2389804

将您当前的结构转换为更方便的数据结构(JSON),如下所示:const workers = [  {    name   : 'David',    age    : 41,    salary : 100  },  {    name   : 'Juan',    age    : 22,    salary : 80  },  {    name   : 'Simon',    age    : 33,    salary : 120  },  {    name   : 'Lukas',    age    : 50,    salary : 150  }];const olderThan30 = workers.filter(worker => worker.age > 30);console.log(olderThan30);// This console log will return this, an array of JSON objects that match the criteria of the filter function.// [//  { name : "David", age : 41, salary : 100 },//  { name : "Simon", age : 33, salary : 120 },//  { name : "Lukas", age : 50, salary : 150 }// ]我希望这将有所帮助。

烙印99

就像@CharlieFish 提到的那样,您的数据结构不是正常的做事方式,而是您可以这样做:const employees = [  { name: 'David', age: 41, salary: 100 },  { name: 'Simon', age: 33, salary: 120 },  { name: 'Lukas', age: 50, salary: 150 },];const over30 = employees.filter(employee => employee.age > 30);如果您确实需要坚持使用您的模式,您仍然可以这样做,但您必须过滤每个单独的数组:const isOver30 = (_, i) => object1.age[i] > 30;const thoseOver30 = {  name: object1.name.filter(isOver30),  age: object1.age.filter(isOver30),  salary: object1.salary.filter(isOver30)}...或更少重复:const thoseOver30 = Object  .entries(object1)  .map(([prop, array]) => ({ [prop]: array.filter(isOver30) }))  .reduce((result, props) => Object.assign(result, props), {});

慕桂英546537

一个易于理解的解决方案:const maxAge = 30;const object = {&nbsp; name: ['David', 'Juan', 'Simon', 'Lukas'],&nbsp; age: [41, 22, 33, 50],&nbsp; salary: [100, 80, 120, 150]};const result = { name: [], age: [], salary: [] };for (let i = 0; i < object.name.length; i++) {&nbsp; &nbsp; if (object.age[i] <= maxAge) {&nbsp; &nbsp; &nbsp; &nbsp; result.name = [...result.name, object.name[i]];&nbsp; &nbsp; &nbsp; &nbsp; result.age = [...result.age, object.age[i]];&nbsp; &nbsp; &nbsp; &nbsp; result.salary = [...result.salary, object.salary[i]];&nbsp; &nbsp; }}console.log(result);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript