Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用lodash或VueJS中的任何JS库从类别对象中搜索产品名称_Javascript_Node.js_Vue.js - Fatal编程技术网

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包含获取类别而不是产品的片段。