簡體   English   中英

如何過濾和 map 一個數組?

[英]How to filter and map an array?

我有這個需要過濾的 object。

let data = JSON.parse(this.getDataFromArray).map((x: any) => x.isEnabled === true);

我只需要在“數據”中獲取“isEnabled”為真的值的 ID。

使用Array.prototype.flatMap來實現結果。

 const dataArray = [ { id: 1, name: "Alice", isEnabled: false }, { id: 2, name: "Bob", isEnabled: true }, { id: 3, name: "Charlie", isEnabled: true }, { id: 4, name: "Dave", isEnabled: true }, { id: 5, name: "Eve", isEnabled: false }, { id: 6, name: "Frank", isEnabled: false }, ]; let data = dataArray.flatMap(elm => elm.isEnabled? [elm.id]: []); console.log(data);

請注意,如果沒有 polyfill,則無法在 IE 中使用flatMap

如果需要 IE 支持,請使用Array.prototype.forEach

 const dataArray = [ { id: 1, name: "Alice", isEnabled: false }, { id: 2, name: "Bob", isEnabled: true }, { id: 3, name: "Charlie", isEnabled: true }, { id: 4, name: "Dave", isEnabled: true }, { id: 5, name: "Eve", isEnabled: false }, { id: 6, name: "Frank", isEnabled: false }, ]; let data = []; dataArray.forEach((elm) => { if (elm.isEnabled) { data.push(elm.id); } }); console.log(data);

嘗試先過濾,然后將 map過濾到所需的屬性:

JSON.parse(this.getDataFromArray).filter((x: any) => x.isEnabled === true).map((result: any) => result.id);

您可以將filtermap結合使用。

 const array = [{ id: 1, isEnabled: true }, { id: 2, isEnabled: false }, ] let data = array.filter( ({isEnabled}) =>.;isEnabled).map(({id}) => id); console.log(data)

此外,您可以在下面使用正確的類型而不是any

  const data = JSON.parse(this.getDataFromArray)
    .filter(({ isEnabled }: { isEnabled: boolean }) => !!isEnabled)
    .map(({ id }: { id: string }) => id);

暫無
暫無

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

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