Nodejs数组索引函数的用法

我试图在nodejs上开发一个随机的类别Id生成器函数。 首先,我从我的数据库中接收所有现有的类别Id,并将它们推入一个数组,然后生成一个随机整数(在边界之间),然后将随机数与我的cat ID数组进行比较。 我使用indexof()函数进行比较,但它总是返回true; 可能是什么问题。 这是我的代码;

var random = require("random-js") var selectCategoryID = "SELECT id from category.category"; var catIdresult = client.querySync(selectCategoryID); var catIdArray = []; catIdresult.forEach(function (row) { var catId = row.id; catIdArray.push(catId); }); var randomNum = new random() var K = randomNum.integer(16777000, 16777999); if(catIdArray.indexOf(K)){ console.log("Error, the id is : " + K); } else {console.log("Success, the id is : " + K)} 

indexOf函数返回数组中的第一个索引,如果没有find,则返回-1 。 所以你的代码应该这样做:

 if (catIdArray.indexOf(K) === -1) { //insert into db } else { //error } 

您还可以使用mapfunction获取所有ID:

 catIdArray = catIdresult.map(function(cat) {return +cat.id});