Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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 数组和检查内部值时出现问题_Javascript - Fatal编程技术网

Javascript 数组和检查内部值时出现问题

Javascript 数组和检查内部值时出现问题,javascript,Javascript,您好,最近我正在使用JavaScript处理数组,在函数方面出现了一个小问题 我的问题在函数checkRepeat中,在这个函数中,我试图知道我之前是否单击了一张卡,当我单击第一张卡工作,但其他卡不工作时,我想我的问题可能是循环,因为它可能只占用一个元素,但我不知道 这是我的代码: const cardArray = [ {name: 'fries'}, {name: 'pizza'}, {name: 'hotdog'}, {name: 'cheeseburger

您好,最近我正在使用JavaScript处理数组,在函数方面出现了一个小问题

我的问题在函数checkRepeat中,在这个函数中,我试图知道我之前是否单击了一张卡,当我单击第一张卡工作,但其他卡不工作时,我想我的问题可能是循环,因为它可能只占用一个元素,但我不知道

这是我的代码:

const cardArray = [
    {name: 'fries'},
    {name: 'pizza'},
    {name: 'hotdog'},
    {name: 'cheeseburger'},
    {name: 'milkshake'},
    {name: 'ice-cream'}
]
const emptyCard = [
    {name: 'white'},
    {name: 'blank'}
]
// the format of the img
const format = '.png'
// I select the place where I gonna put the board
const grid = document.querySelector('.grid');
const cardsChosen = [];
const cardsChosenId = [];


const createBoard = () =>{
    for(let n = 0; n < cardArray.length*2; n++)
    {
        // I create the img
        let card = document.createElement('img');
        card.src = `images/${emptyCard[1].name}${format}`;
        card.id = `card-${n}`
        card.addEventListener('click',flipCard)
        grid.appendChild(card)
    }
}

function flipCard(){
    // I get the id, just the number
    let cardId = parseInt(this.getAttribute('id').slice(5,7));
    const v1 = checkRepeat(cardsChosenId,cardId);
    console.log("Value: ",v1)
    //console.log("Values in the array: ",cardsChosenId)
}

function checkRepeat(array,value){
    if(array.length === 0){// if the array is empty
        array.push(value);//push in the array the value
        return true;// and return true
    }
    else{// if isn't
        for(let i = 0; i < array.length; i++){// walk through the array
            if(array[i] === value){// check if the values of the array === value
                return false;
            }
            else{// if the value and the array values are different
                array.push(value);//push the value
                return true;
            }
        }
    }
}

createBoard();
const cardArray=[
{name:'fries'},
{name:'pizza'},
{name:'热狗'},
{name:'奶酪汉堡'},
{name:'奶昔'},
{name:'冰淇淋'}
]
常数emptyCard=[
{name:'white'},
{name:'blank'}
]
//img的格式
常量格式='.png'
//我选择了我要放黑板的地方
const grid=document.querySelector('.grid');
常数cardsChosen=[];
常量cardsChosenId=[];
const createBoard=()=>{
for(设n=0;n
我在代码中发现了错误,问题在于逻辑

因为当它遍历数组时,它会找到一个相等的值,但它会继续遍历数组和其他值​​与比较值不相似,因此它会添加相同的值​​在数组中稍后给我

我解释:

当我点击每张卡片时,它们会将id保存在一个排列中,如果我再次点击我之前给它的卡片,它会与每个元素进行比较,当它找到相同的元素时,它会返回false,但会继续滚动整个排列,并在我不应该的时候向排列中添加更多元素

例如:

我点击第一个元素,[0]被保存,我点击第二个[0,1],我再次给出第二个元素,当比较0和1时,我发现它们不同,当它只返回[0,1]时,仍然是这样的[0,1,1]

我决定包括:

function checkRepeat(array,value){
   if(array.includes(value)){//return true if value it's in the array
        return false;
    }
    else{
        array.push(value);
        return true;
    }
}


我在代码中发现了错误,问题在于逻辑

因为当它遍历数组时,它会找到一个相等的值,但它会继续遍历数组和其他值​​与比较值不相似,因此它会添加相同的值​​在数组中稍后给我

我解释:

当我点击每张卡片时,它们会将id保存在一个排列中,如果我再次点击我之前给它的卡片,它会与每个元素进行比较,当它找到相同的元素时,它会返回false,但会继续滚动整个排列,并在我不应该的时候向排列中添加更多元素

例如:

我点击第一个元素,[0]被保存,我点击第二个[0,1],我再次给出第二个元素,当比较0和1时,我发现它们不同,当它只返回[0,1]时,仍然是这样的[0,1,1]

我决定包括:

function checkRepeat(array,value){
   if(array.includes(value)){//return true if value it's in the array
        return false;
    }
    else{
        array.push(value);
        return true;
    }
}


“它们不工作”并没有为我们提供任何有意义的调试细节。发生了什么,与预期有什么不同,您进行了哪些故障排除,是否存在错误等?除非您需要阵列,否则我认为对象或贴图更适合您的情况。抱歉,让我解释得更好,当我点击卡片时,我保存了我之前设计的号码,在我遇到问题的函数中,我会遍历整个排列,只有当数组中存储了值时,它才会返回true或false,当它遍历数组并发现一个与我比较的值相等的值时,它可能返回false,但之后它继续遍历同一数组并将该值添加到数组中,因为它将它与一个完全不同的数组进行比较?您可以将整个id存储在数据id属性中。为了进行检查,如果数组包含元素,请使用includes方法,最好使用一个集合。“它们不起作用”不会为我们提供任何有意义的调试细节。发生了什么,与预期有什么不同,您进行了哪些故障排除,是否存在错误等?除非您需要阵列,否则我认为对象或贴图更适合您的情况。抱歉,让我解释得更好,当我点击卡片时,我保存了我之前设计的号码,在我遇到问题的函数中,我会遍历整个排列,只有当数组中存储了值时,它才会返回true或false,当它遍历数组并发现一个与我比较的值相等的值时,它可能返回false,但之后它继续遍历同一数组并将该值添加到数组中,因为它将它与一个完全不同的数组进行比较?您可以将整个id存储在数据id属性中。为了进行检查,如果数组包含元素,请使用includes方法,最好使用一个集合。