Javascript 如何使用lodash或VueJS中的任何JS库从类别对象中搜索产品名称
我在Javascript 如何使用lodash或VueJS中的任何JS库从类别对象中搜索产品名称,javascript,node.js,vue.js,Javascript,Node.js,Vue.js,我在vue.js中使用下面的对象从类别对象搜索产品 我尝试过使用这种方式,但不起作用: _.find(this.allCategories, _.flow( _.property('product'), _.partialRight(_.some, { product_name: "Shir" }) )); 我的目标: [{ "id": 2, "name": "Shirt",
vue.js
中使用下面的对象从类别对象搜索产品
我尝试过使用这种方式,但不起作用:
_.find(this.allCategories, _.flow(
_.property('product'),
_.partialRight(_.some, { product_name: "Shir" })
));
我的目标:
[{
"id": 2,
"name": "Shirt",
"product": [{
"id": 1,
"product_name": "Shirt 123",
"price": "150.00",
"image": "http://localhost/l9FRGvZDfb.jpeg"
}, {
"id": 4,
"product_name": "Shirt 456",
"price": "12.44",
"image": "http://localhost/A5rmGtOnW9.jpeg"
}]
}, {
"id": 2,
"name": "Froots",
"product": [{
"id": 1,
"product_name": "Apple 121",
"image": "http://localhost/Dfb.jpeg"
}, {
"id": 4,
"product_name": "Banana 121",
"price": "12.44",
"image": "http://localhost/tOnW9.jpeg"
}]
}]
你不需要图书馆 您可以使用js找到所需的字符串
var乘积=[
{
“id”:1,
“产品名称”:“衬衫123”,
“价格”:“150.00”,
“图像”:http://localhost/l9FRGvZDfb.jpeg"
},
{
“id”:4,
“产品名称”:“衬衫456”,
“价格”:“12.44”,
“图像”:http://localhost/A5rmGtOnW9.jpeg"
}
]
var searchField=“Shirt 456”;
对于(变量i=0;i }
我对Lodash的经验是有限的,但这里有一个相当简单的vanilla JS示例,它应该可以完成您试图做的事情。注释应该贯穿每一步,但是如果您希望我扩展任何代码,请告诉我
const数据=[{
“id”:2,
“姓名”:“衬衫”,
“产品”:[{
“id”:1,
“产品名称”:“衬衫123”,
“价格”:“150.00”,
“图像”:http://localhost/l9FRGvZDfb.jpeg"
}, {
“id”:4,
“产品名称”:“衬衫456”,
“价格”:“12.44”,
“图像”:http://localhost/A5rmGtOnW9.jpeg"
}]
}, {
“id”:2,
“名称”:“Froots”,
“产品”:[{
“id”:1,
“产品名称”:“苹果121”,
“图像”:http://localhost/Dfb.jpeg"
}, {
“id”:4,
“产品名称”:“香蕉121”,
“价格”:“12.44”,
“图像”:http://localhost/tOnW9.jpeg"
}]
}]
常量输入='Shir'
//获得所有产品的扁平阵列
constproducts=data.map(item=>item.product).flat()
//按以输入开头的名称筛选产品列表
//请注意,您可以用任何筛选函数替换'product.product_name.startsWith(input)`以改进搜索
const output=products.filter(product=>product.product\u name.startsWith(输入))
log(输出)
下面的代码片段(在vanilla js中)可以帮助您
常量类别=[
{
id:2,
姓名:“衬衫”,
产品:[
{
id:1,
产品名称:“衬衫123”,
价格:“150.00”,
图像:“http://localhost/l9FRGvZDfb.jpeg",
},
{
id:4,
产品名称:“衬衫456”,
价格:“12.44”,
图像:“http://localhost/A5rmGtOnW9.jpeg",
},
],
},
{
id:2,
姓名:“弗罗茨”,
产品:[
{
id:1,
产品名称:“苹果121”,
图像:“http://localhost/Dfb.jpeg",
},
{
id:4,
产品名称:“香蕉121”,
价格:“12.44”,
图像:“http://localhost/tOnW9.jpeg",
},
],
},
]
const term=“hirt”
const res=类别
.flatMap(({product})=>product)
.filter(({product_name})=>
product_name.toLowerCase()包括(term.toLowerCase())
)
console.log(res)
很抱歉,属于同一类别和每个类别的产品都有多个产品。直到关于.flatMap()
,谢谢@今天我也在追埃布里森谢谢你的回答:)。我已经实现了这段代码,但它是只返回产品对象,但我想使用category对象谢谢回答:)。我已经实现了这段代码,但它只返回产品对象,但我希望category objectUpdated包含获取类别而不是产品的片段。