我有一个将对象插入数组(任务)的字段。
任务[
描述:“测试”,
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);
}
答案 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类似的方式。