javascript - 添加到数组时检查对象属性 - ES6
问题描述
我有一个简单的算法问题,但找不到合适的解决方案。有一个数组,如果数组中的任何对象属性值的属性recipe_id
都不相同,我只想在数组中添加一个项目。recipe_id
如果它具有相同的属性值,我想阻止添加任何项目。如果财产的价值不同,那没关系。因此,Recipes 数组中的所有对象都应该具有不同的recipe_id
值。我编写了这些代码,但它似乎无法正常工作
这是 JSBin 链接:链接
const Recipes =[
{recipe_id:4},
{recipe_id:5}
]
onClickedHandler = (recipe_id) => {
const favData = {
recipe_id: recipe_id,
}
if (Recipes.length > 0) {
for (let item in Recipes) {
if (Recipes[item].recipe_id !== recipe_id) {
console.log("added in the loop!")
Recipes.push(item)
} else {
console.log("it is already in the Recipe list!")
}
}
} else {
console.log("Recipes is empty")
Recipes.push({recipe_id:recipe_id})
}
}
onClickedHandler(9)
console.log(Recipes.length)
解决方案
使用Array.some方法检查 ID 是否存在于数组中。你可能需要类似的东西:
const Recipes =[
{recipe_id:4},
{recipe_id:5}
];
function addRecipe(recipeId) {
if(!Recipes.some(item => item.recipe_id === recipeId)) {
Recipes.push({recipe_id:recipeId});
console.log("Not duplicate, inserted");
} else {
console.log("duplicate");
}
}
addRecipe(4);
addRecipe(6);
console.log(Recipes)
推荐阅读
- java - Spring mvc 应用程序没有出现错误-找不到属性'basePackageClasses'
- java - 如何将两个单独的列表添加到二维数组?
- html - 高度设置为 100% 时显示整页的网格
- javascript - 如何向 laravel voyager 关系 BelongsToMany 添加条件
- amazon-web-services - 第三方 MYSQL 上 AWS Lambda 的连接超时续集
- sqlite - Flutter SQFLite 一次创建多个表
- database - DDD、数据库和数据列表
- python-3.x - PyQt5:视频结束后如何删除小部件并将图片放在视频播放器的位置
- gtk3 - gtk3 中不支持自定义形状的窗口?
- node.js - Node.js 出站 IP - 更改地址