Javascript 计算,在更改时打印项目,不重复
每次项目列表更改时,我都尝试在表中显示项目。我有一个函数和一个计算机,但我不确定我是否做对了Javascript 计算,在更改时打印项目,不重复,javascript,html,vue.js,Javascript,Html,Vue.js,每次项目列表更改时,我都尝试在表中显示项目。我有一个函数和一个计算机,但我不确定我是否做对了 Function(){ Every time a new value comes in: changeList.push(item); } 然后我计算了这个 Computed: changedData: function(){ return this.changeList; } HTML 这将添加所有问题及其值,无论列表中是否已包含具有完全相同值的相同问题。在
Function(){
Every time a new value comes in: changeList.push(item);
}
然后我计算了这个
Computed:
changedData: function(){
return this.changeList;
}
HTML
这将添加所有问题及其值,无论列表中是否已包含具有完全相同值的相同问题。在您的代码中,实际上不需要计算。以下是在运行时将动态值添加到列表中的基本示例 模板代码=>
<script src="//vuejs.org/js/vue.js"></script>
<h1>Example of managing a Vue.js list</h1>
<div id="products">
<vue-products></vue-products>
</div>
<script type="text/template" id='vue-products-template'>
<div>
<form v-on:submit.prevent="addProduct">
<input type="text" v-model="productName">
<input type="submit" value="Add"></input>
</form>
<ul>
<li v-for="name in productNames">{{name}}</li>
</ul>
</div>
</script>
在您的代码中,实际上不需要计算。以下是在运行时将动态值添加到列表中的基本示例 模板代码=>
<script src="//vuejs.org/js/vue.js"></script>
<h1>Example of managing a Vue.js list</h1>
<div id="products">
<vue-products></vue-products>
</div>
<script type="text/template" id='vue-products-template'>
<div>
<form v-on:submit.prevent="addProduct">
<input type="text" v-model="productName">
<input type="submit" value="Add"></input>
</form>
<ul>
<li v-for="name in productNames">{{name}}</li>
</ul>
</div>
</script>
因此,要实现这一点,您可以在数组中检查是否存在具有相同值的对象。如果不存在,则只推送值 下面是更新的代码
const search = (newVal,oldVal) => array.find(element => (element.newValue === newVal && element.oldValue === oldVal));
for(index in question.Answers){
if(!search(question.Answers[index].Value,savedQuestion.Value))
if(question.Answers[index].Selected === "selected" &&
question.Answers[index].Value === savedQuestion.Value){
this.myList.push({newValue: question.Answers[index].Value, oldValue:
savedQuestion.Value});
}
}
因此,要实现这一点,您可以在数组中检查是否存在具有相同值的对象。如果不存在,则只推送值 下面是更新的代码
const search = (newVal,oldVal) => array.find(element => (element.newValue === newVal && element.oldValue === oldVal));
for(index in question.Answers){
if(!search(question.Answers[index].Value,savedQuestion.Value))
if(question.Answers[index].Selected === "selected" &&
question.Answers[index].Value === savedQuestion.Value){
this.myList.push({newValue: question.Answers[index].Value, oldValue:
savedQuestion.Value});
}
}
嘿,你应该检查一下这个例子。它当然可以帮你。你可以发布一个代码笔吗?你的计算属性也是多余的,因为它没有对数据进行任何修改。。不需要将
变更列表
包装到计算属性中。哦,好吧,我不需要计算属性。另外,我认为我已经发现了重复的问题,但不是100%确定如何解决它。问题在于我的push函数中,我将获取的所有值添加到列表中,而不管列表是否已经包含这些项。有没有一种简单的方法可以检查列表是否包含特定对象,或者我是否应该为此提出一个新问题?如果您可以添加代码,那就太好了。您想让我提出一个新问题,还是将其添加为此问题的编辑?嘿,您应该检查此示例。它当然可以帮助您。您可以发布一个代码笔,此外,您的计算属性是冗余的,因为它没有对数据进行任何修改。。不需要将变更列表
包装到计算属性中。哦,好吧,我不需要计算属性。另外,我认为我已经发现了重复的问题,但不是100%确定如何解决它。问题在于我的push函数中,我将获取的所有值添加到列表中,而不管列表是否已经包含这些项。有没有一种简单的方法可以检查列表是否包含特定对象,或者我是否应该为此创建一个新问题?如果您可以添加代码,那就太好了。您希望我创建一个新问题,还是将其添加为此问题的编辑?这是一个很好的答案,但我发现每次运行函数templast.push时都可以创建一个空列表(项目)然后在for循环外的函数末尾:this.myList=tempListYes这是肯定的,但是当您询问是否还有其他方法时,我想到了这个答案,可能是您不需要再次推送所有值(如果它们存在)。这是一个很好的答案,但我发现每次运行函数,tempList.push(items)然后在for循环外的函数末尾:this.myList=tempListYes这是肯定的,但我想到了这个答案,当你问是否有其他方法可以这样做时,你可能不需要再次推送所有值(如果它们存在)。
const search = (newVal,oldVal) => array.find(element => (element.newValue === newVal && element.oldValue === oldVal));
for(index in question.Answers){
if(!search(question.Answers[index].Value,savedQuestion.Value))
if(question.Answers[index].Selected === "selected" &&
question.Answers[index].Value === savedQuestion.Value){
this.myList.push({newValue: question.Answers[index].Value, oldValue:
savedQuestion.Value});
}
}