Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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
用于输出的document.write()JavaScript_Javascript_Arrays_Function_Object - Fatal编程技术网

用于输出的document.write()JavaScript

用于输出的document.write()JavaScript,javascript,arrays,function,object,Javascript,Arrays,Function,Object,我使用的是一组对象 let items = [ { type: "Shirt", gender: ["Men", "Women", "Boys", "Girls"], size: "Small", }, { type: "Shirt", gender:

我使用的是一组对象

let items = [
    {
        type: "Shirt",
        gender: ["Men", "Women", "Boys", "Girls"],
        size: "Small",

    },
    {
        type: "Shirt",
        gender: ["Men", "Women", "Boys"],
        size: "Medium",

    },
    {
        type: "Shirt",
        gender: ["Men", "Women"],
        size: "Large",

    },
];

let filteredArr = [];
filteredArr = items;
我正在用输入搜索一件衬衫使用以下代码

function fetchItemsByType() {
    
    let isItemAva = filteredArr.filter(obj => obj["type"] === searchForType);
    isItemAva.forEach(obj => {
        for (let i = 0; i < obj["type"].length; i++) {
            if (obj["type"] === searchForType) {}
        } document.write(obj["type"] + " of " + obj["size"] + " size is Available for " + obj["gender"] + "<br>" + "<br>")
       
    });
    return isItemAva;
}
let getItemsByType = fetchItemsByType();

if (searchForType === searchForType) {
    console.log(getItemsByType);
}
然后我用输入搜索“大小”(注意:
'Shirt'
'Small'
都是像这样输入的)

代码是:

function fetchItemsBySize() {

    let isSizeAva = getItemsByType.filter(obj => obj["size"] === searchForSize);
    isSizeAva.forEach(obj => {
        for (let i = 0; i < obj["size"].length; i++) {
            if (obj["size"] === searchForSize) {}
        }document.write(obj["type"] + " of " + obj["size"] + " size is Available for " + obj["gender"] + "<br>" + "<br>")
    
    });
    return isSizeAva;
}
let getItemsBySize = fetchItemsBySize();

if (searchForSize === searchForSize) {
    console.log(getItemsBySize);
} 
我只想展示

Shirt of Small size is Available for Men,Women,Boys,Girls
因为我在找一件
衬衫
,尺寸
而且应该只有

Shirt of Small size is Available for Men,Women,Boys,Girls

因此,只有在我输入了
类型
尺寸
时,才能通过从最终输出中删除
衬衫
的其他结果来获得特定的结果。

不要使用document.write

没有用

您有一个循环和
if(obj[“size”]==searchForSize){}
,它在该循环内不做任何事情

使用过滤器和映射,您的代码会工作得更好

我选择不使用默认参数,因为您似乎更愿意“手动”设置3个参数

let项目=[
{字体:“衬衫”,性别:[“男”、“女”、“男”、“女”],尺码:“小”},
{字体:“衬衫”,性别:[“男”、“女”、“男”],尺码:“中等”},
{字体:“衬衫”,性别:[“男”、“女”],尺码:“大号”},];
让searchForType=“”、searchForSize=“”、searchForGender=“”;
常量getItems=()=>items
.filter(({类型、大小、性别})=>
(searchForType===“”| | type===searchForType)&&
(searchForSize===“”| |大小===searchForSize)&&
(searchForGender==“”| |性别。包括(searchForGender)))
.map(({type,size,gender})=>size为${size}的${type}可用于${searchForGender?gender.filter(gender=>gender==searchForGender):gender.join(“,”)}
.加入(“

”); //类型、大小和性别为空 searchForType=“”; searchForSize=“”; searchForGender=“”; document.getElementById(“输出”).innerHTML=“所有类型:
” document.getElementById(“输出”).innerHTML+=getItems(); searchForType=“Shirt”//所有衬衫 document.getElementById(“输出”).innerHTML+=“
所有衬衫:
” document.getElementById(“输出”).innerHTML+=getItems(); searchForSize=“中”//中号衬衫 document.getElementById(“输出”).innerHTML+=“
所有媒体:
” document.getElementById(“输出”).innerHTML+=getItems(); //所有男式衬衫 searchForSize=”“;//重置大小 searchForGender=“Men”; document.getElementById(“输出”).innerHTML+=“
所有男性:
” document.getElementById(“输出”).innerHTML+=getItems(); //女式衬衫 searchForGender=“女性” document.getElementById(“输出”).innerHTML+=“
所有女式衬衫:
” document.getElementById(“输出”).innerHTML+=getItems(); //所有中等女孩的衬衫 searchForType=“衬衫”; searchForGender=“女孩”; searchForSize=“中”; document.getElementById(“输出”).innerHTML+=“
所有中等女孩衬衫:
” document.getElementById(“输出”).innerHTML+=getItems()| |“未找到”//可选错误消息可用于所有呼叫

如果您可以使用过滤器和映射函数,您可以轻松获得所需的值,而不是使用
forEach
函数,最佳做法是使用映射函数

我强烈建议您对此进行测试。你会赢得很多时间

let filteredArr = [];
const searchForSize = prompt("Enter a size value");
const findItemsWithSize = () => {
    filteredArr = items.filter(fItem => fItem.size === searchForSize).map(item => 
        console.log(item.type + " of " + item.size + " size is Available for " + item.gender.join(" "))
    )
}
if (searchForSize === "Small") {
    findItemsWithSize()
}

法鲁克

你看到我的答案了吗?你不是在寻找答案items@mplungjan你来这里是为了让你的一天变得有意义吗DNo,我是来帮助人们的。包括您…谢谢@mplungjan我可以仅使用上述代码获得“衬衫”的结果吗?如果是,我需要在哪里进行更改@mplungjan mplungjan-我想设置我的代码,当我只输入
searchForType='Shirt'
时,所有可用
Shirt
的结果都应该显示出来。接下来,当我用
searchForType='Shirt'
输入
searchForSize='Small'
时,应该会看到所有可用的
Small
尺寸衬衫的结果。我希望我的问题是清楚的。你能帮我做同样的事情吗?好的,我现在已经包括了所有选项。希望有帮助
Shirt of Small size is Available for Men,Women,Boys,Girls
Shirt of Small size is Available for Men,Women,Boys,Girls
if (searchForSize === searchForSize) {
let filteredArr = [];
const searchForSize = prompt("Enter a size value");
const findItemsWithSize = () => {
    filteredArr = items.filter(fItem => fItem.size === searchForSize).map(item => 
        console.log(item.type + " of " + item.size + " size is Available for " + item.gender.join(" "))
    )
}
if (searchForSize === "Small") {
    findItemsWithSize()
}