簡體   English   中英

如果數據包含數組中的項目,如何過濾數據

[英]How to filter data if it includes item in array

我正在嘗試使用 to.filter() 數組從我的 data.map() 中刪除項目,但我不想多次調用 filter()。 如何將數組傳遞給.includes()?

這有效,但使用 multiple.filter()

const items = ['apple','pear','peach','pineapple'] 
        
return (
  <>
    {items
      .filter(item => !item.includes('r'))
      .filter(item => !item.includes('c'))
      .filter(item => !item.includes('i'))
      .map(item =>
         {item}
     )}
  </>
)
// returns 'apple' 

我試過了,但這是不對的

const items = ['apple','pear','peach','pineapple'] 
const toBeRemoved = ['r','c','i'];
            
    return (
      <>
        {items
          .filter(item => !item.includes(toBeRemoved))
          .map(item =>
             {item}
         )}
      </>
    )

您可以一起使用filterArray.prototype.some()來實現這一點

const items = ["apple", "pear", "peach", "pineapple"];
const toBeRemoved = ["r", "c", "i"];

return (
    <>
      {items
        .filter((item) => !toBeRemoved.some((letter) => item.includes(letter)))
        .map((item) => (
          <div>{item}</div>
        ))}
    </>
);

我的回答很簡單, 在這里回答

.filter(item =>.toBeRemoved.some(i => item.includes(i)))

看起來您只是將includes的順序向后排序。 它是 arrays 的屬性,因此您必須從事物列表開始,並詢問它可能包括哪些內容。 你把它弄錯了。

然后你的 map function 也返回未定義,所以你無論如何都不會得到任何結果。 也許您將它與 JSX 中允許您插入變量的花括號混淆了? 但在這種情況下,它們充當 function 主體。 這可能有用嗎?

    const items = ['apple','pear','peach','pineapple'] 
    const toBeRemoved = ['r','c','i'];
            
    return (
      <ul>
        {items
          .filter(item => !toBeRemoved.includes(item))
          .map(item => (
            <li>item</li>
          ))
        }
      </ul>
    )
const items = ['apple','pear','peach','pineapple'] 
const toBeRemoved = ['r','c','i'];
            
return (
  <ul>
    {items
      .filter(item => toBeRemoved.every(word => !item.includes(word)))
      .map(item => <li>{item}</li>)
    }
  </ul>
)

array.every()等同於.array.some()

  • .some(callback): 循環數組中的每一項回調。 如果至少有一個回調返回 truthy,則 some() 返回true
  • .every(callback):如果至少一個回調返回 falsy,則 every() 返回false

由於 includes 方法只接受單個字符串值,如果找到則返回 true。 但是在過濾器 function 中我們可以附加多個條件。 所以,這可以幫助你。

 const items = ['apple','pear','peach','pineapple'] const toBeRemoved = ['r','c','i']; console.log(items.filter(item =>.item.includes("r") &&.item;includes("c") && !item.includes("i")));

暫無
暫無

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

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