如何让JavaScript识别对象是否在数组中?

如何让JavaScript识别对象是否在数组中?,javascript,Javascript,JavaScript对象的新特性。在下面的代码中,我能够创建并填充每个人都已“签出”的图书对象列表。然而,我无法“归还”这些书,因为我无法识别该书是在哪个用户的数组中“签出”的。我正在使用 如果(数组中的对象) 我从前面的一个答案中得到了这个答案。带有if的语句块从不执行。谢谢你的帮助 function Book(title, pub_date, call_number, authors){ this.title = title; this.availability = true

JavaScript对象的新特性。在下面的代码中,我能够创建并填充每个人都已“签出”的图书对象列表。然而,我无法“归还”这些书,因为我无法识别该书是在哪个用户的数组中“签出”的。我正在使用

如果(数组中的对象)

我从前面的一个答案中得到了这个答案。带有if的语句块从不执行。谢谢你的帮助

function Book(title, pub_date, call_number, authors){
    this.title = title;
    this.availability = true;
    this.pub_date = pub_date;
    this.current_date = null;
    this.check_out_date = null;
    this.call_number = call_number;
    this.authors = authors;
}
Book.prototype.checkOut = function(){
        this.availability = false;
        var rdom = (Math.random() * 31 +1).toFixed(0);
        var current_date = new Date();
        this.check_out_date = new Date(current_date - rdom*24*3600*1000);
    }

Book.prototype.checkIn = function(){
        this.availability = true;
    }

Book.prototype.isOverdue = function(){
        var current_date = new Date();
        if ((current_date - this.check_out_date)/1000/3600/24 > 14)
            return true;
        else
            return false;
    }

function Author(first_name, last_name){
    this.first_name = first_name;
    this.last_name = last_name;
}

function Patron(firstname, lastname, lib_card){
    this.firstname = firstname;
    this.lastname = lastname;
    this.lib_card = lib_card;
    this.books_out = [];
    this.fine = 0;
}
Patron.prototype.readBook = function(book){
        this.books_out.push(book);
    }

Patron.prototype.returnBook = function(book){
        this.books_out.pop(book);
    }

var redAuthors, blueAuthors, greenAuthors, yellowAuthors, purpleAuthors
var redAuthor1 = new Author('John', 'Smith');
var redAuthor2 = new Author('James', 'Sullivan');
var redAuthors = [redAuthor1, redAuthor2];
var blueAuthors = greenAuthors = yellowAuthors = purpleAuthors = redAuthors;

redBook = new Book('Lakes', 1963, 456789, redAuthors);
blueBook = new Book('Rivers', 1964, 123456, blueAuthors);
greenBook = new Book('Streams', 1965, 234567, greenAuthors);
yellowBook = new Book('Ponds', 1966, 345678, yellowAuthors);
purpleBook = new Book('Brooks', 1967, 567891, purpleAuthors);
var catalog = [redBook, blueBook, greenBook, yellowBook, purpleBook]

var patron1 = new Patron('Sally', 'Hudson', '1');
var patron2 = new Patron('Rachel', 'Hung', '2');
var patron3 = new Patron('Andy', 'Cunningham', '3');
var patron4 = new Patron('Steve', 'Cote', '4');
var patron5 = new Patron ('Ted', 'Mitrou', '5');
var patrons = [patron1, patron2, patron3, patron4, patron5]

for (var day_count = 0; day_count < 10; day_count++){
    for (var book_count = 0; book_count < 5; book_count++){
        if (catalog[book_count].availability == true){
            for (var pat_count = 0; pat_count < 5; pat_count++){
                if (patrons[pat_count].books_out.length <= 1){
                    catalog[book_count].checkOut();
                    patrons[pat_count].readBook(catalog[book_count]);
                    break;
                }
                else
                    continue;
            }
        }
        else {
            catalog[book_count].checkIn();
            for (pat_counter = 0; pat_counter < 5; pat_counter++){
                if (catalog[book_count] in patrons[pat_counter].books_out){
                    if (catalog[book_count].isOverdue)
                        patrons[pat_counter].fine += 5;
                    patrons[pat_counter].books_out.returnBook(catalog[book_count]);
                }
            }
        }       
    }
}

for (var k = 0; k < 5; k++){
    console.log("Patron: " + patrons[k].firstname + " " + patrons[k].lastname);
    console.log("Books checked out: ")
    for (l = 0; l < patrons[k].books_out.length; l++) {
        console.log(patrons[k].books_out[l].title);
    }
    console.log("Fine: $" + patrons[k].fine);
    console.log();
}    
功能手册(标题、发布日期、电话号码、作者){
this.title=标题;
这是有效性=真;
this.pub_date=发布日期;
this.current_date=null;
this.check\u out\u date=null;
this.call\u number=call\u number;
this.authors=作者;
}
Book.prototype.checkOut=函数(){
这是有效性=假;
var rdom=(Math.random()*31+1.toFixed(0);
var current_date=新日期();
this.check_out_date=新日期(当前日期-rdom*24*3600*1000);
}
Book.prototype.checkIn=函数(){
这是有效性=真;
}
Book.prototype.isOverdue=函数(){
var current_date=新日期();
如果((当前日期-此签出日期)/1000/3600/24>14)
返回true;
其他的
返回false;
}
函数作者(名、姓){
this.first\u name=first\u name;
this.last_name=last_name;
}
功能用户(名字、姓氏、lib_卡){
this.firstname=firstname;
this.lastname=lastname;
this.lib_card=lib_card;
this.books_out=[];
此值为0.fine=0;
}
Patron.prototype.readBook=函数(book){
这个。书。推出。推(书);
}
customer.prototype.returnBook=函数(book){
这本书出版了;
}
红色作者、蓝色作者、绿色作者、黄色作者、紫色作者
var redAuthor1=新作者(“约翰”、“史密斯”);
var redAuthor2=新作者(“詹姆斯”、“沙利文”);
var redAuthors=[redAuthor1,redAuthor2];
var blueAuthors=greenAuthors=yellowAuthors=purpleAuthors=redAuthors;
红皮书=新书(《湖泊》,1963年,456789年,红皮书作者);
蓝皮书=新书(《河流》,1964年,123456年,蓝皮书作者);
绿皮书=新书(《溪流》,1965年,234567年,绿皮书作者);
yellowBook=新书(《池塘》,1966年,345678年,yellowAuthors);
紫书=新书(“布鲁克斯”,1967,567891,紫书作者);
var目录=[红皮书、蓝皮书、绿皮书、黄皮书、紫皮书]
var patron1=新赞助人(“萨利”、“哈德逊”、“1”);
var patron2=新客户('Rachel','Hung','2');
var patron3=新赞助人(“安迪”、“坎宁安”、“3”);
var patron4=新赞助人(“史蒂夫”、“科特”、“4”);
var patron5=新客户(“Ted”、“Mitrou”、“5”);
var用户=[用户1、用户2、用户3、用户4、用户5]
对于(var日数=0;日数<10;日数++){
对于(var帐簿计数=0;帐簿计数<5;帐簿计数++){
if(目录[book_count]。可用性==true){
对于(var pat_count=0;pat_count<5;pat_count++){

如果(用户[pat_count].books_out.length您可以使用
indexOf

if (array.indexOf(object) > -1)
如果
x
是包含
y
上属性名称的字符串,则
x在y
中只会返回
true