亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

過濾所有鍵的數組的javascript對象

過濾所有鍵的數組的javascript對象

RISEBY 2022-06-09 19:08:38
我是 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]};感謝您的任何建議
查看完整描述

3 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

將您當前的結構轉換為更方便的數據結構(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 }

// ]

我希望這將有所幫助。


查看完整回答
反對 回復 2022-06-09
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

就像@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), {});


查看完整回答
反對 回復 2022-06-09
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

一個易于理解的解決方案:


const maxAge = 30;

const object = {

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

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

  salary: [100, 80, 120, 150]

};


const result = { name: [], age: [], salary: [] };


for (let i = 0; i < object.name.length; i++) {

    if (object.age[i] <= maxAge) {

        result.name = [...result.name, object.name[i]];

        result.age = [...result.age, object.age[i]];

        result.salary = [...result.salary, object.salary[i]];

    }

}

console.log(result);


查看完整回答
反對 回復 2022-06-09
  • 3 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號