簡體   English   中英

如何包括數組的整個長度?

[英]How to include the entire length of arrays?

下面,我創建了此過濾器方法,僅顯示在fullDetails數組中找到的內容。

如果這個問題不清楚,或者使用的術語錯誤,我深表歉意。

現在,如果我輸入每個單獨的元素,它就可以工作(例如,fullDetails [0])。 但是數組有4個元素。 我如何編寫它使其包括數組的整個長度? (即[0] [1] [2] [3])?

let modItemList = this.props.items.filter(
        (item) => {
            return item.fullDetails[0].toLowerCase().indexOf(this.state.searchItems.toLowerCase()) !== -1;
        }
    );

如果您的過濾器應該保留其fullDetails數組包含this.state.searchItems (不區分大小寫)的項目,則您正在尋找some數組方法:

let lc = this.state.searchItems.toLowerCase(); // Do this once
let modItemList = this.props.items.filter(
    (item) => item.fullDetails.some(e => e.toLowerCase().indexOf(lc) !== -1)
);

some呼吁其回調數組中的每個條目,停止和返回true ,如果回調返回truthy值(如果這不可能發生, some回報false )。

除了indexOf ,您還可以使用includes (ES2015,如let和arrow函數):

let lc = this.state.searchItems.toLowerCase(); // Do this once
let modItemList = this.props.items.filter(
    (item) => item.fullDetails.some(e => e.toLowerCase().includes(lc))
);

您可以使用every檢查每個元素是否匹配。

let modItemList = this.props.items.filter(
    (item) => {
        return item.fullDetails.every(fullDetail => fullDetail.toLowerCase().indexOf(this.state.searchItems.toLowerCase()) !== -1);
    }
);

但是, searchItems的復數表示這也可能是一個數組-因此也許您需要在此處翻轉/增強邏輯。

暫無
暫無

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

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