javascript - 如何检查对象数组中是否存在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);
}
};
});
解决方案
您可以按照 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);
}
});
推荐阅读
- android-studio - 使用 ARCore 的 Buggy Virtualscene 后置摄像头 Android Studio 模拟器
- python - 修改使用 S3 分段文件上传创建的文件的后缀
- java - 如何从方法中正确处理异常?
- c# - 当我尝试阅读 PDF 时,PDFBox 会读取一个空字符串
- java - JSON 到 STL 或 AutoCAD 的其他格式
- c# - 带有 Convert 和 TryCatch 的 C# 表达式
- hadoop - Hadoop 中每个节点的最大容器数是什么意思?
- python - 使用 REGEX python 检查点是否后跟任何其他正则表达式元字符
- css - 我的页面顶部不需要的边距
- python - 如何在熊猫中将列名放入具有特定条件的数据框单元格中