首页 > 解决方案 > 如何检查对象数组中是否存在id值

问题描述

给定一个对象数组“posts”{id:“x”,title:“title”},我需要在输入新帖子之前验证是否有先前输入的id(通过id是字段的表单)。

我尝试循环浏览帖子,但在输入重复的新数据时会出现问题。谢谢你的帮助,这让我发疯了。

// ADD NEW POST FROM FORM TO ARRAY
$("#form").submit(function(event) {
    event.preventDefault();
    var id = Number($("#idPost").val());
    var title = $("#titlePost").val();
    var date = new Date($("#data").val());
// CHECK IF id ALREADY EXISTS, IF YES, BLOCK ENTRY    
    for(num of posts){
        console.log (id, num.id);
        if(id === num.id){ 
            console.log("error");
        } else {
            var post = new Post(id, title, date);
        }                
    };      
});

标签: javascript

解决方案


您可以按照 Andreas 的建议使用Array.prototype.some()或使用Array​.prototype​.find()

Array.prototype.some() 只会返回 true 或 false 并且不会返回匹配的对象。如果您需要该对象,请使用 find() 如下:

$("#form").submit(function(event) {
event.preventDefault();
var id = Number($("#idPost").val());
var title = $("#titlePost").val();
var date = new Date($("#data").val());
var objectPresent = posts.find(function(post) {
   return post.id === id;
});
if(!objectPresent) {
   var post = new Post(id, title, date);
} else {
  console.log(objectPresent.id,"is already taken up by ", objectPresent.title);
}

});


推荐阅读