为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Javascript .filter() 不返回带有活动过滤器(== 或 ===)的任何内容

为什么 Javascript .filter() 不返回带有活动过滤器(== 或 ===)的任何内容

萧十郎 2023-03-18 16:22:01

import React from "react";

import productsData from "./products.js";

import Product from "./Product.js";


function App() {

  const arrrayOfImportedProducts = productsData.map((x) => (

    <Product

      id={x.id}

      name={x.name}

      price={x.price}

      description={x.description}

    />

  ));


  const array2 = arrrayOfImportedProducts.filter((y) => y.id != 1);


  return <div>{array2}</div>;

}


export default App;


当我运行代码时,除了 .filter() 方法外,一切正常。每当我使用 == 或 === 过滤特定元素时,它都会给我一个空白屏幕。当我使用 !== 或 !=== 时,它会向我显示 array2 的所有元素,包括不应该在其中的元素。为什么它不起作用?


查看完整描述

1 回答

?
潇潇雨雨

TA贡献1613条经验 获得超4个赞

由于您首先进行映射,然后进行过滤,因此您的过滤函数正在检查.id反应元素的属性。React 元素没有 id 属性。因此,由于 id 永远不会匹配,您的代码!==将始终通过,因此所有内容都包含在内。如果你使用则相反===:它永远不会通过,所以什么都不包括在内。


您将需要切换代码的顺序:


function App() {

  const filteredProducts = arrrayOfImportedProducts.filter((y) => y.id != 1);

  const arrrayOfImportedProducts = filteredProducts.map((x) => (

    <Product

      id={x.id}

      name={x.name}

      price={x.price}

      description={x.description}

    />

  ));


  return <div>{arrrayOfImportedProducts}</div>;

}


查看完整回答
反对 回复 2天前
  • 1 回答
  • 0 关注
  • 7 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信