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

时间:2014-11-19 18:13:12

标签: javascript arrays

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

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");
            }
        }
}

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

它实际上比你制作的更简单。你想要更像的东西:

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");
            }
        }
}

答案 2 :(得分:0)

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

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

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");
        }
    }
}