路由参数和对象属性是相同的值,但彼此不相等

时间:2019-07-11 15:56:54

标签: laravel vue.js

我在一个项目中,我需要检查问题round_id的值是否等于我从参数中获得的回合ID。但是,当我相互检查它们时,它们实际上是相同的值,但彼此并不“相等”。

这是我的代码:

mounted() {

        //gets the params from the url
        this.routeParams = this.$route.params;

    },
    methods:{
        ...mapActions('question', ['newQuestion', 'fetchQuestions']),
        setOrderNumber() {

            //sets the order number for this question
            let $orderNumber = 1;
            console.log("The questions:");
            console.log(this.questions);

            for (let $i = 0; $i < this.questions.length; $i++)
            {
                console.log('this.questions[$i].round_id:');
                console.log(this.questions[$i].round_id);

                console.log('this.routeParams.round_id:');
                console.log(this.routeParams.round_id);

                console.log('this.questions[$i].round_id === this.routeParams.round_id:');
                console.log(this.questions[$i].round_id === this.routeParams.round_id);

                if(this.questions[$i].round_id === this.routeParams.round_id)
                {
                    console.log('$orderNumber before:');
                    console.log($orderNumber);

                    $orderNumber++;
                    console.log('$orderNumber after:');
                    console.log($orderNumber);

                }
            }

在控制台上,这是我得到的: enter image description here

我注意到问题3中的3是蓝色,路线params.round_id是黑色。这可能是问题所在吗?

1 个答案:

答案 0 :(得分:1)

请注意,您在控制台中看到的数字3具有不同的颜色。灰色的3是字符串,就像您在其前面打印的字符串一样。蓝色3,就像您打印的蓝色false一样,都是基元。在这种情况下,蓝色的3是一个数字。您可以通过记录typeof this.questions[$i].rount_idtypeof this.routeParams.round_id来验证这一点。

考虑到url本身是一个字符串,因此url中的参数是字符串也就不足为奇了。只需执行parseInt(variable, 10);mdn)即可将其解析为数字。