javascript 如何从对象数组中获取属性值以比较值

kpbwa7wx  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(134)

我想从这个数组中得到name属性的值,然后过滤它的值,以搜索输入数据,对项目进行排序,我该怎么做呢?

items: [
            {
                id: 1,
                name: 'Brown Brim',
                imageUrl: 'https://i.ibb.co/ZYW3VTp/brown-brim.png',
                price: 25
            },
            {
                id: 2,
                name: 'Blue Beanie',
                imageUrl: 'https://i.ibb.co/ypkgK0X/blue-beanie.png',
                price: 18
            }

我尝试使用find()方法,但它返回每个具有name属性的对象

items.find(item => item.name).name.icludes(searchData)
kzipqqlq

kzipqqlq1#

试试这个

const newData = items.filter(item => item.name === searchData);

使用newData进行操作。

qnyhuwrf

qnyhuwrf2#

更新的答案

你说,
我想从这个数组中得到name属性的值,然后过滤它的值,以搜索输入数据,对项目进行排序,我该怎么做呢?
如果这不是你想要的,
1 =〉获取一个只有name字段的数组。

items.map(item => item.name);
`[ 'Brown Brim', 'Blue Beanie' ]`

2 =〉然后根据searchData过滤新数组。

.filter(item => item.toLowerCase().includes(searchData.toLowercase()));

3 =〉并对过滤后的数组进行排序。

.sort()

4 =〉最后都在一起了。
确保将变量赋值为newArray,因为items数组将保持完全相同,并且我们的函数将把经过过滤和排序的数组返回给我们赋值的变量。

const newArray = items.map(item => item.name)
      .filter(item => item.toLowerCase().includes(searchData.toLowerCase()))
      .sort();

旧答案

我已将@sushildlh answer修改为更安全的版本

const filteredData = items.filter(item => item.name.toLowerCase().includes(searchData.toLowerCase()));

相关问题