微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Javascript 中为无效输入设置消息?

如何解决如何在 Javascript 中为无效输入设置消息?

我有一个对象数组。

let mainMenu = [
    {
        brand: "Zara",type: "Shirt",gender: ["Men","Women","Boys","Girls"],size: "Small",image: "",description: "",price: "300",colour: "Red",stock: "10",discount: 5,rating: "4"
    },{
        brand: "Nike","Boys"],size: "Medium",price: "600",stock: "20",rating: "5"
    },{
        brand: "Adidas","Women"],size: "Large",price: "700",stock: "30",{
        brand: "Puma",type: "tShirt",gender: ["Boys",stock: "40",price: "400",stock: "50",{
        brand: "Zara",gender: ["Women",{
        brand: "USPA",type: "Jeans",gender: ["Men"],price: "2000",gender: ["Women"],price: "2500",gender: ["Boys"],price: "3000",rating: "4"
    }
];

我想显示匹配性别名称的整个项目。我的输入是 let searchForGender = "Men"; 下面是函数并且工作正常。

function getClothesAvaGen() {
    mainMenu.forEach(obj => {
        for (let i = 0; i < obj["gender"].length; i++) {
            if (obj["gender"][i] === searchForGender && searchForType === "" && searchForSize === "" && searchForBrand === ""
                && searchForStock === "" && searchForPrice === "" && searchForrating === "") {
                console.log(obj)
                document.write("gender : " + obj["gender"][i] + "<br>" + "type : " + obj["type"] + "<br>" + "size : " + obj["size"] + "<br>" + "brand : " + obj["brand"] + "<br>" +
                    "price : " + obj["price"] + "<br>" + "stock : " + obj["stock"] + "<br>" + "rating : " + obj["rating"] + "<br>" + "<br>")
            }
        }
    });
}
getClothesAvaGen();

输出

gender : Men
type : Shirt
size : Small
brand : Zara
price : 300
stock : 10
rating : 4

gender : Men
type : Shirt
size : Medium
brand : Nike
price : 600
stock : 20
rating : 5

gender : Men
type : Shirt
size : Large
brand : Adidas
price : 700
stock : 30
rating : 5

gender : Men
type : tShirt
size : Medium
brand : Nike
price : 400
stock : 50
rating : 4

gender : Men
type : Jeans
size : Small
brand : USPA
price : 2000
stock : 30
rating : 4

但我想为“Men1”、“MenAbc”等输入或任何其他无效输入设置 'No Match Found'。我如何以及在哪里可以在我上面编写的代码中设置它。 'No Match Found' 应该只出现一次错误输入。

解决方法

就在 for 循环之后,像这样

function getClothesAvaGen() {
    mainMenu.forEach(obj => {

        let isNotFound = true

        for (let i = 0; i < obj["gender"].length; i++) {
            if (obj["gender"][i] === searchForGender && searchForType === "" && searchForSize === "" && searchForBrand === ""
                && searchForStock === "" && searchForPrice === "" && searchForRating === "") {
                isFound = false
                console.log(obj)
                document.write("gender : " + obj["gender"][i] + "<br>" + "type : " + obj["type"] + "<br>" + "size : " + obj["size"] + "<br>" + "brand : " + obj["brand"] + "<br>" +
                    "price : " + obj["price"] + "<br>" + "stock : " + obj["stock"] + "<br>" + "rating : " + obj["rating"] + "<br>" + "<br>")
            }
        }

        if(isNotFound) {
           // do something
        }
    });
}
getClothesAvaGen();
,

您可以使用 array.filterarray.includes 函数来简化操作。

function getClothesAvaGen(){
  // filter items those their gender,includes our searchForGender term.
  let availableItems = mainMenu.filter(item => item['gender'].includes(searchForGender));

  // if not found such items then print no match and get out of function.
  if (availableItems.length == 0){
    console.log('No Match');
    return;
  }

  //If found,for each of them,print some data
  availableItems.forEach(obj =>{
    console.log("gender : " + searchForGender + "\n" + "Brand : " + obj['brand'] + "\n" + "Other Data...")});
}

getClothesAvaGen();

let mainMenu = [
    {
        brand: "Zara",type: "Shirt",gender: ["Men","Women","Boys","Girls"],size: "Small",image: "",description: "",price: "300",colour: "Red",stock: "10",discount: 5,rating: "4"
    },{
        brand: "Nike","Boys"],size: "Medium",price: "600",stock: "20",rating: "5"
    },{
        brand: "Adidas","Women"],size: "Large",price: "700",stock: "30",{
        brand: "Puma",type: "tShirt",gender: ["Boys",stock: "40",price: "400",stock: "50",{
        brand: "Zara",gender: ["Women",{
        brand: "USPA",type: "Jeans",gender: ["Men"],price: "2000",gender: ["Women"],price: "2500",gender: ["Boys"],price: "3000",rating: "4"
    }
];
let searchForGender = "Men";
function getClothesAvaGen(){
  let availableItems = mainMenu.filter(item => item['gender'].includes(searchForGender));
  if (availableItems.length == 0){
    console.log('No Match');
    return;
  }
  availableItems.forEach(obj =>{
    console.log("gender : " + searchForGender + "\n" + "Brand : " + obj['brand'] + "\n" + "Other Data...")});
}

getClothesAvaGen();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。