将用户输入插入到对象数组中

Inserting user input into an array of objects

本文关键字:对象 数组 插入 用户 输入      更新时间:2023-09-26

我有一个对象数组,其中包含有关用户邮政编码,地点和收集日期的信息。我希望能够为新注册用户插入新的邮政编码。目前,我的代码会搜索对象数组以查看邮政编码是否已存在,如果存在,则会通知用户它已经注册。这工作正常。有人可以帮我向对象数组添加新的邮政编码吗?正如您在下面看到的,我已经尝试过了,但它不起作用。谢谢。

var postcodes =
        [
            { postcode: "BT486AA1", place: "Londonderry Park, Londonderry", dates: ["16/05/2014", "18/06/2014", "19/07/2014"] },
            { postcode: "BT486AB1", place: "Londonderry Park, Londonderry", dates: ["17/05/2014", "11/06/2014"] },
            { postcode: "BT486AD1", place: "Londonderry Park, Londonderry", dates: ["14/05/2014", "20/06/2014"] },
            { postcode: "BT486EL1", place: "Londonderry Park, Londonderry", dates: ["16/05/2014", "18/06/2014", "19/07/2014"] },
            { postcode: "BT171JR6", place: "Londonderry Park, Londonderry", dates: ["17/05/2014", "11/06/2014"] },
            { postcode: "BT171JR7", place: "Ballyregan Park, Londonderry", dates: ["14/05/2014", "20/06/2014"] },
            { postcode: "BT171JR1", place: "Ballyregan Park,Londonderry", dates: ["16/05/2014", "18/06/2014", "19/07/2014"] },
            { postcode: "BT171JR2", place: "Ballyregan Park, Londonderry", dates: ["17/05/2014", "11/06/2014"] },
            { postcode: "BT181JR3", place: "Ormeau Park, Londonderry", dates: ["14/05/2014", "20/06/2014"] },
            { postcode: "BT181JR4", place: "Ormeau Park, Londonderry", dates: ["16/05/2014", "18/06/2014", "19/07/2014"] },
            { postcode: "BT191JR6", place: "Main Street, Londonderry", dates: ["17/05/2014", "11/06/2014"] },
            { postcode: "BT191JR7", place: "Main Street, Londonderry", dates: ["14/05/2014", "20/06/2014"] }
        ];

function RegisterUser() {
    for (var i = 0; i < postcodes.length; i++) {
        var postCode = document.getElementById("pc2").value;
        if (postcodes[i].postcode === postCode) {
            alert("The postcode you entered is already registered");
        }
        else {
            AddUser();
        }

    }
}

function AddUser() {
    var postCode2 = document.getElementById("pc2").value
    var newUser = postcodes[i].postcode;
    for (var i = 0; i < postcodes.length; i++) {
            if (newUser.indexOf(postCode2) === -1) {
                postcodes[i].postcode.push(postCode2);

                alert("Postcode Registered : " + postCode2 + " Smart Waste Management Scheme will be in contact regarding your step towards smart waste");
            }
        }
}

它实际上比你做的要简单。 你想要更像:

postcodes.push({postcode: postCode2, place: "Some place, etc." }); // plus any other properties you may be adding

在上下文中,它看起来像这样:

function AddUser() {
    var postCode2 = document.getElementById("pc2").value
    var newUser = postcodes[i].postcode;
    for (var i = 0; i < postcodes.length; i++) {
            if (newUser.indexOf(postCode2) === -1) {
                postcodes.push({postcode: postCode2});
                alert("Postcode Registered : " + postCode2 + " Smart Waste Management Scheme will be in contact regarding your step towards smart waste");
            }
        }
}

以下是将另一个对象插入数组的一种方法:

function AddUser() {
  postcodes.push(
    { postcode: "BT191JR7", place: "Main Street, Londonderry", dates: ["14/05/2014", "20/06/2014"] }
  );
}

看起来你不想要一个全新的用户。看起来您只想向邮政编码中的现有对象添加邮政编码。添加一个全新的对象将不允许你只添加到现有的邮政编码。

此代码允许您使用一个对象并将新用户添加到现有邮政编码。

function RegisterUser() {
    for (var i = 0; i < postcodes.length; i++) {
        var postCode = document.getElementById("pc2").value;
        var passPostcode = postcodes[i].postcode;
        if (passPostcode === postCode) {
            alert("The postcode you entered is already registered");
            break;
        }
        else {
            AddUser(passPostcode);
        }

   }
}

function AddUser(newUser) {
    var postCode2 = document.getElementById("pc2").value
    this.newUser = newUser;
    for (var i = 0; i < postcodes.length; i++) {
        if (this.newUser.indexOf(postCode2) === -1) {
            var str_postcode = postcodes[i].postcode;
            var addedNewPostCodeToString = str_postcode + ',' + postCode2;
            //postcodes[i].postcode is not an array. Push will not work. You will need to concatenate the string and will need to add a delimiter 
            postcodes[i].postcode = addedNewPostCodeToString; //delimited with comma. 

            alert("Postcode Registered : " + postCode2 + " Smart Waste Management Scheme will be in contact regarding your step towards smart waste");
        }
    }
}