javascript - 创建函数以在 if 语句中将对象添加到具有多个条件的数组
问题描述
我正在尝试创建一个函数,将新的动物对象添加到已经存在的动物数组中。该代码似乎工作正常,只是它添加了 3 次新对象。我猜它一定与我的 if 语句中的 3 个条件有关。我不知道怎么写才能让它只添加一次新元素。
var pig = {
species: 'pig',
name: 'bob',
noises: ['oink', 'snort', 'fart', 'squeal']
}
//i function
//o adds new animal to animals array
//c takes 2 parameters, must check for unique name, name property >0, species property >0
//signature of 'function add(animals, animal) {'
function add(animals, animal) {
for (var i = 0; i < animals.length; i++) {
if ((animal.name.length > 0) && (animal.species.length > 0) && (animal.name !== animals[i].name)) {
animals.push(animal);
}
}
}
// console.log(animals)
add(animals, pig)
解决方案
您可以做的是删除 for 循环并使用“查找”方法在数组中搜索具有提供的动物名称的动物。
function add(animals, animal) {
const animalExists = animals.find((a) => a.name === animal.name);
if ((!animalExists) && (animal.name.length > 0) && (animal.species.length > 0)) {
animals.push(animal);
}
}
推荐阅读
- performance - 必须避免奇怪的站点访问者用户代理吗?如果是怎么办?
- node.js - 使用 isRead 标志向 MERN 应用程序添加类似 facebook 的通知功能
- javascript - 如何将输入保存到浏览器的本地存储中?
- web - Heroku 上未部署 Mern Stack 客户端构建
- google-drive-api - 下载文件并上传到其他云后丢失文件格式
- java - 输出不正确(交换数字的第一位和最后一位)
- python - Gekko 错误地找不到整数解
- c# - 有没有办法在c#中分配一个键盘按钮来控制?
- c# - C# Powershell BeginInvoke Completed 事件未触发
- google-calendar-api - 传输日历事件和 events.list 同步行为