I'll take a wild guess that you want to remove username
, email
, and password
entirely. If so, you're looking for delete
, which removes properties from objects:
app.get('/users', function(req, res){ Users.find{}, function(err, usersArray){
for(var a = 0; a < usersArray.length; a++){
var userData = usersArray[a].userData;
delete userData.username;
delete userData.email;
delete userData.password;
...
}
res.render('users.ejs', {
// and the variables go here...
})
}
If those propeties are non-configurable, delete
can't remove them, and you have to make do with setting their values to undefined
:
app.get('/users', function(req, res){ Users.find{}, function(err, usersArray){
for(var a = 0; a < usersArray.length; a++){
var userData = usersArray[a].userData;
userData.username = undefined;
userData.email = undefined;
userData.password = undefined;
...
}
res.render('users.ejs', {
// and the variables go here...
})
}
If they're both non-configurable and non-writable, you'll have to create replacement objects instead.
Live Example using delete
:
var usersArray = [{
userData: {
name: "User 1", // Something to have left after we remove the others
username: "user1",
email: "user1@example.com",
password: "pa$$word"
}
}, {
userData: {
name: "User 2",
username: "user2",
email: "user2@example.com",
password: "pa$$word"
}
}, {
userData: {
name: "User 3",
username: "user3",
email: "user3@example.com",
password: "pa$$word"
}
}];
snippet.log("Before: " + JSON.stringify(usersArray, null, 2));
for (var a = 0; a < usersArray.length; a++) {
var userData = usersArray[a].userData;
delete userData.username;
delete userData.email;
delete userData.password;
}
snippet.log("After: " + JSON.stringify(usersArray, null, 2));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
Live Example with non-configurable properties using undefined
:
function makeUserData(name, username, email, password) {
var ud = {name: name};
Object.defineProperty(ud, "username", {
enumerable: true,
configurable: false,
writable: true,
value: username
});
Object.defineProperty(ud, "email", {
enumerable: true,
configurable: false,
writable: true,
value: email
});
Object.defineProperty(ud, "password", {
enumerable: true,
configurable: false,
writable: true,
value: password
});
return ud;
}
var usersArray = [{
userData: makeUserData("User 1", "user1", "user1@example.com", "pa$$word")
},{
userData: makeUserData("User 2", "user2", "user2@example.com", "pa$$word")
},{
userData: makeUserData("User 3", "user3", "user3@example.com", "pa$$word")
}];
snippet.log("Before: " + JSON.stringify(usersArray, null, 2));
for (var a = 0; a < usersArray.length; a++) {
var userData = usersArray[a].userData;
delete userData.username;
delete userData.email;
delete userData.password;
}
snippet.log("After delete: " + JSON.stringify(usersArray, null, 2));
for (var a = 0; a < usersArray.length; a++) {
var userData = usersArray[a].userData;
userData.username = undefined;
userData.email = undefined;
userData.password = undefined;
}
snippet.log("After assigning undefined: " + JSON.stringify(usersArray, null, 2));
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>