问题描述
我正在尝试创建一个函数,将新的动物对象添加到现有的动物数组中。该代码似乎工作正常,只是它添加了 3 次新对象。我猜它一定与我的 if 语句中的 3 个条件有关。我不知道还能怎么写才能让它只添加一次新元素。
try (Connection dbConn = hConn.getHikariMap().get("" + connectionId).getConnection();) {
Statement statement = dbConn.createStatement();
if (fileData.get(0).length == 1) {
fileData.stream().forEach(row -> {
columnValTemp.append("','" + row[fileColumnorder.get(0)] + "','" + row[fileColumnorder.get(0)]);
valuestemp.append(columnValTemp);
columnValTemp.setLength(0);
values.append(valuestemp);
String query = "INSERT INTO " + schema + "." + tableName + " (" + columns + ") VALUES " + " ('" + values+ "')";
try {
statement.addBatch(query);
} catch (sqlException e) {
e.printstacktrace();
}
values.delete(values.length() - valuestemp.length(),values.length());
valuestemp.setLength(0);
});
statement.executeBatch();
}
} catch (sqlException e) {
logger.error(e,e);
e.printstacktrace();
}
解决方法
您可以做的是删除 for 循环并使用“find”方法在数组中搜索具有提供动物名称的动物。
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);
}
}