簡體   English   中英

如何過濾此數組中大於或等於90的標記?

[英]How do I filter marks greater than or equal to 90 in this array?

let students = [
  {"Name": "Priya","marks": [50, 60, 70, 80, 90]},
  {"Name": "Ankita","marks": [80, 90, 95]}
] 

結果應該是這樣,

[{"Name": "Priya", "marks": [90]}, {"Name": "Ankita","marks": [90,95]}]

Nikhil的第一個答案將修改原始數組,不建議這樣做,因此您可以簡單地執行此操作。

let students = [
      {"Name": "Priya","marks": [50, 60, 70, 80, 90]},
      {"Name": "Ankita","marks": [80, 90, 95]}
    ]

現在,我要過濾大於或等於90的標記,代碼將如下所示。

students.map((student) => {
  return {...student, 
          marks: student.marks.filter((mark) => mark >= 90)
         }
}) 
// Result will be [{"Name": "Priya", "marks": [90]}, {"Name": "Ankita","marks": [90,95]}]

Spread operator將擴展student ,然后將其marks key替換為已filtered marks value

如果您不使用傳播運算符,

students.map((student) => student.marks.filter((mark) => mark >= 90))
// Result will be [[90],[90]]

然后,您將僅獲得過濾后的值,而不是尚未應用過濾器的值。

使用Array.filter可以根據條件過濾數組的值。

更新現有數組 (使用Array.forEach

 let students = [{"Name": "Priya","marks": [50, 60, 70, 80, 90]},{"Name": "Ankita","marks": [80, 90, 95]}]; students.forEach(o => o.marks = o.marks.filter(v => v >= 90)); console.log(students); 

創建新數組 (使用Array.mapObject.assign

 let students = [{"Name": "Priya","marks": [50, 60, 70, 80, 90]},{"Name": "Ankita","marks": [80, 90, 95]}]; let result = students.map(o => Object.assign({}, o, {marks : o.marks.filter(v => v >= 90)})); console.log(result); 

您可以使用.map() .filter()Object.assign()方法:

 let data = [ {"Name": "Priya","marks": [50, 60, 70, 80, 90]}, {"Name": "Ankita","marks": [80, 90, 95]} ]; let result = data.map( o => Object.assign(o, {marks: o.marks.filter(v => v >= 90)}) ); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM