防止在对象中向数组添加重复值

时间:2016-12-19 21:48:16

标签: jquery arrays

我有一个将对象插入数组(任务)的字段。

任务[

描述:“测试”,

id:“date.now()中的唯一” ]

如何防止在我的数组中添加相同的描述值。

<div class="container">
    <input id="list-input" />
    <input id="select-status" value="New" type="hidden"/>
    <button id="add">Add To List</button>
</div>

我的剧本

var tasks = [];

$('#add').click(function() {
    var desc    = $.trim($('#list-input').val());
    var date    = Date.now(); //for unique value of id
    var strDate = date.toString();
    var id      = strDate.substring(strDate.length-6, strDate.length);

    item        = {};

    if (!desc) {
        item.id = "";
        alert("Input a description");
        return;
    }

    item.id          = id;
    item.description = desc;
    tasks.push(item);
}

2 个答案:

答案 0 :(得分:2)

您可以拥有多个对象,因此不确定为什么更改了初始任务类型? 无论如何,你可以这样做:

$blocks
var tasks = [];

$('#add').click(function() {
    var desc    = $.trim($('#list-input').val());
    var date    = Date.now(); //for unique value of id
    var strDate = date.toString();
    var id      = strDate.substring(strDate.length-6, strDate.length);

    item = {};

    if (!desc) {
        item.id = "";
        alert("Input a description");
        return;
    }

item.id          = id;
item.description = desc;

for(i=0;i<tasks.length;i++) {
if(tasks[i].description==desc) {
alert('In array!')
return;
}
}

tasks.push(item);    
 

 
 console.log(tasks); 
});

因此,只需检查描述值是否已存在于其中一个对象中,即数组内。

答案 1 :(得分:0)

首先,您的tasks数组示例不是有效数组,即:

[ description: "test", id: "unique from date.now()" ]

你的意思是将元素括在花括号中吗?:

[ 
  { description: "test", id: "unique from date.now()" }, 
  { description: "test2", id: "unique from date.now()" } 
]

如果要确保数组中已存在具有特定描述的对象,则在添加新对象之前,可以循环数组并检查先前的副本,然后再添加新对象。与this类似的方式。