Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 如何在JS中不显示函数返回消息的情况下获取键值对_Javascript_Function_If Statement - Fatal编程技术网

Javascript 如何在JS中不显示函数返回消息的情况下获取键值对

Javascript 如何在JS中不显示函数返回消息的情况下获取键值对,javascript,function,if-statement,Javascript,Function,If Statement,我有一个嵌套对象,如: let menu = { vegetarian: { vegStarter: { plainPizza: 100, redChilliPizza: 150, cheesePizza: 200, capsicumPizza: 160, onionPizza: 200, }, vegMainCourse

我有一个嵌套对象,如:

let menu = {
    vegetarian: {
        vegStarter: {
            plainPizza: 100,
            redChilliPizza: 150,
            cheesePizza: 200,
            capsicumPizza: 160,
            onionPizza: 200,
        },
        vegMainCourse: {
            pepperoniPizza: 150,
            mushroomsPizza: 160,
            extraCheesePizza: 250,
            blackOlivesPizza: 220,
            greenPeppersPizza: 180,
        }
    },
    nonVegetarian: {
        nonVegStarter: {
            supremeMeatPizza: 100,
            meatPizza: 130,
            meatLoversPizza: 160,
            chickenPizza: 200,
            chilliMeatPizza: 200
        },
        nonVegMainCourse: {
            butterMeatPizza: 220,
            spicyChickenPizza: 170,
            seafoodPizza: 300,
            spinachEggPizza: 200,
            eggPizza: 250,
        }
    }
}
这是我对函数的输入:

let getSearchTermtoFindByNameFromNonVegMainCourse = "spinachEggPizza";
function searchUsingNameFromNonVegMainCourseCategory(mainObject, getSearchTermtoFindByNameFromNonVegMainCourse) {
    let arrOfNonVegMainCourseKeys = [];
    Object.keys(mainObject).forEach(key => {
        if (getSearchTermtoFindByNameFromNonVegMainCourse === ' ') {
            alert("Enter Valid Value.")
        } else {
            if (key !== getSearchTermtoFindByNameFromNonVegMainCourse) {
                } else {
                if (key === getSearchTermtoFindByNameFromNonVegMainCourse && typeof mainObject[key] !== "object") {
                    arrOfNonVegMainCourseKeys = key;
                    document.write(arrOfNonVegMainCourseKeys + " : " + mainObject[key] + "<br>");
                } else {
                    if (typeof mainObject[key] === "object") {
                    searchUsingNameFromNonVegMainCourseCategory(mainObject[key], getSearchTermtoFindByNameFromNonVegMainCourse, arrOfNonVegMainCourseKeys)
                    }
                }
            }
        }
    }); return document.write("No Match Found.");
}
searchUsingNameFromNonVegMainCourseCategory(menu.nonVegetarian.nonVegMainCourse, getSearchTermtoFindByNameFromNonVegMainCourse);
功能如下:

let getSearchTermtoFindByNameFromNonVegMainCourse = "spinachEggPizza";
function searchUsingNameFromNonVegMainCourseCategory(mainObject, getSearchTermtoFindByNameFromNonVegMainCourse) {
    let arrOfNonVegMainCourseKeys = [];
    Object.keys(mainObject).forEach(key => {
        if (getSearchTermtoFindByNameFromNonVegMainCourse === ' ') {
            alert("Enter Valid Value.")
        } else {
            if (key !== getSearchTermtoFindByNameFromNonVegMainCourse) {
                } else {
                if (key === getSearchTermtoFindByNameFromNonVegMainCourse && typeof mainObject[key] !== "object") {
                    arrOfNonVegMainCourseKeys = key;
                    document.write(arrOfNonVegMainCourseKeys + " : " + mainObject[key] + "<br>");
                } else {
                    if (typeof mainObject[key] === "object") {
                    searchUsingNameFromNonVegMainCourseCategory(mainObject[key], getSearchTermtoFindByNameFromNonVegMainCourse, arrOfNonVegMainCourseKeys)
                    }
                }
            }
        }
    }); return document.write("No Match Found.");
}
searchUsingNameFromNonVegMainCourseCategory(menu.nonVegetarian.nonVegMainCourse, getSearchTermtoFindByNameFromNonVegMainCourse);
但我只希望
spinachEggPizza:200
显示为输出


我这边出了什么问题?

这是因为您总是在功能块底部返回“document.write(“未找到匹配项”)”,您可以设置在条件else块中打印该消息:

if(GetSearchTermToFindByNamefromNonSegmainCourse==''){
警报(“输入有效值”)
}否则{
if(key!==GetSearchTermToFindByNamefromNonSegmainCourse){
}否则{
if(key==GetSearchTermToFindByNamefromNonSegmainCourse&&TypeOfMainObject[key]!==“object”){
arrOfNonVegMainCourseKeys=键;
document.write(arrOfNonVegMainCourseKeys+”:“+mainObject[key]+”
”; }否则{ if(主对象的类型[键]=“对象”){ 使用NonVegMainCourseCegory中的名称进行搜索(Main对象[key],从NonVegMainCourse、arrOfNonVegMainCourseKeys中获取SearchTerms到IndByName) } } }否则{ document.write(“未找到匹配项”) } }); }
为什么不干脆做:

const菜单=
{素食者:
{蔬菜起动器:{普通披萨:100,红辣椒披萨:150,奶酪披萨:200,辣椒披萨:160,洋葱披萨:200}
,蔬菜主菜:{Pepperoni比萨:150,Mushromospizza:160,extraCheesePizza:250,黑橄榄比萨:220,青椒比萨:180}
} 
,非素食主义者:
{Non-egstarter:{supremeMeatPizza:100,meatPizza:130,meatLoversPizza:160,chickenPizza:200,chilliMeatPizza:200}
,非芝士主菜:{乳酪比萨:220,辣味鸡比萨:170,海鲜比萨:300,菠菜比萨:200,鸡蛋比萨:250}
} } 
函数foo(路径、道具){
设res=null
试一试{
res=路径[prop]
}
捕获(e){
警报(“输入有效值”)
返回空
}
return(res==未定义)?“未找到匹配项”。:`${prop}:${res}`
}
console.log(foo(menu.nonVegetarian.nonVegMainCourse,'spinachEggPizza'))

.as console wrapper{max height:100%!important;top:0;}
要遍历嵌套对象并使用递归查找特殊内容,我们可以使用一个小技巧

我们将一个空数组传递给我们的函数,在函数内部,每当我们遇到要查找的键时,我们就将它附加到数组中

最后返回该数组作为结果

函数searchPrice(主对象、搜索文本、找到的价格){
key(mainObject).forEach(key=>{
if(主对象的类型[键]=“对象”){
//请注意,我们在这里也传递找到的价格
searchPrice(主对象[键]、搜索文本、找到的价格);
}否则{
如果(键===搜索文本){
//如果找到,将价格推至找到的价格
找到价格推送(mainObject[key]);
}
}
}); 
退货价格
}
让菜单={
素食者:{
蔬菜起动器:{
普通披萨:100,
雷奇里皮扎:150,
cheesePizza:200,
辣椒比萨饼:160,
Ononipizza:200,
},
主要课程:{
Pepperoni比萨饼:150,
蘑菇比萨:160,
课外活动:250,
blackOlivesPizza:220,
青椒馅饼:180,
}
},
非素食主义者:{
非分段起动器:{
超级比萨饼:100,
肉比萨饼:130,
肉馅披萨:160,
鸡肉披萨:200,
辣椒披萨:200
},
非主流课程:{
奶油披萨:220,
辣鸡披萨:170,
海鲜比扎:300,
菠菜比萨饼:200,
鸡蛋披萨:250,
}
}
}
让search_text='spinachEggPizza';
//将一个空数组传递给函数,该函数将填充匹配键的price或price
让价格=搜索价格(菜单,搜索文本,[]);
//如果找到任何价格,我们会打印出来
如果(prices.length>0){
价格。forEach(价格=>{
文档。写入(搜索文本+“:“+price+”
”); }); }否则{ 文件。填写(“不匹配”);
}
同样,这在AbbasEbadian运行良好。但通过使用您的逻辑,我试图从根目录(即菜单)检查,我得到的是“不匹配”的有效输入。实际上,我想从菜单开始为我的所有案例设置此消息。如果你想让我分享代码,我可以。我再次更新了我的答案@kuldeep@AbbasEbadian。我希望你不会介意。@kuldeep如果我的答案确实回答了你的问题,并且对你有帮助,我将感谢你投票并将其标记为接受答案。