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}); 
    }
   }