我正在尝试以角度处理数组。我需要从数组中获取管理员用户名,并尝试下面的方法
export class AppComponent {
adminName = ''
data = {
id:1,
name:'Test User One',
users:[
{id:1,name:'User 2',role:'Management Admin'},
{id:2,name:'User 3',role:'User'},
{id:3,name:'User 1',role:'Profile Admin'},
]
}
ngOnInit(){
this.getAdminName(this.data.users)
}
getAdminName(users){
let name = ''
name = users.filter((user)=>{
user.role = user.role.replace(/\s/g, '-').toUpperCase()
return user.role === 'PROFILE-ADMIN'
}).map(row=>{
return row.name
})
this.adminName = name[0]
}
}
这是可行的,我可以得到adminName,但它也改变了数据对象的角色,并像这样转换对象
{
"id": 1,
"name": "Test User One",
"users": [
{
"id": 1,
"name": "User 2",
"role": "MANAGEMENT-ADMIN"
},
{
"id": 2,
"name": "User 3",
"role": "USER"
},
{
"id": 3,
"name": "User 1",
"role": "PROFILE-ADMIN"
}
]
}
我理解为什么会发生这种情况,我尝试使用扩展运算符,但它不起作用,我尝试了下面的方法
this.getAdminName([...this.data.users]) // passing from here using spread operator
第二步
getAdminName(users){
let usersList = [...users]
let name = ''
name = usersList.filter((user)=>{
user.role = user.role.replace(/\s/g, '-').toUpperCase()
return user.role === 'PROFILE-ADMIN'
}).map(row=>{
return row.name
})
this.adminName = name[0]
}
我可以像下面这样做
getAdminName(users){
let name = ''
let role;
name = users.filter((user)=>{
role = user.role //used a variable in which holds
role = role.replace(/\s/g, '-').toUpperCase()
return role === 'PROFILE-ADMIN'
}).map(row=>{
return row.name
})
this.adminName = name[0]
}
但我想这样做使用扩散操作员的方法,所以请建议我哪里出错
Stackblitz链接在这里
https://stackblitz.com/edit/angular-rjnytr
在函数中,将user.role=user.role.replace(/\s/g, '-').toUpperCase()
替换为一个新变量,如下所示:
getAdminName(users){
let usersList = [...users]
let name = ''
name = usersList.filter((user)=>{
let role = user.role;
role = role.replace(/\s/g, '-').toUpperCase()
return role === 'PROFILE-ADMIN'
}).map(row=>{
return row.name
})
this.adminName = name[0]
}
用户
是一种参考类型。因此,您需要创建对象的深度副本。尝试使用JSON.parse
方法创建对象的深度副本:
let usersList = [...JSON.parse(JSON.stringify(users))]
我会改变过滤器逻辑以避免任何副作用。
getAdminName(users) {
const name = users
.filter(user => user.role.replace(/\s/g, '-').toUpperCase() === 'PROFILE-ADMIN')
.map(row => row.name);
return name ? name[0] : '';
}
这样,您就不需要考虑spread操作符是如何工作的。
this.getAdminName(this.data.users)
但其他事情都不起作用。例如: 显示:没有为此数据库实例注册名为的过程。请确保正确拼写了过程名,并正确部署了过程。 此外: Edit3:现在调用该过程apoc.spatial.sortByDistance...文档不是最新的。您必须查看存储库的代码...
我有一个程序,用来接受用户的图像。我改为接受PDF文件,而不是我们的客户要求的问题是它不工作。 我已经换了哑剧。php配置到这个 这是我保存上传文件的CI代码 HTML 滑动分页 编辑:jquery报告该文件已成功上载,因为它返回JSON,但每当我检查目录时,都没有任何内容。奇怪的是,我将文件扩展名重命名为。TXT并上传了一个3.5MB的pdf文件。txt扩展名,它已成功上载并位于正确的目录中。
在WildFly 8-1上,我的webapps目录中有和。 我已配置: 我有以下JSF。 其中是 更新: 应Guaido79的请求,我的:
问题内容: 这两个扩展功能有什么区别? 尽管jquery.extend有充分的文档记录,但是angular.extend缺少详细信息,并且注释没有提供答案。(https://docs.angularjs.org/api/ng/function/angular.extend)。 angular.extend是否也提供深层复制? 问题答案: 并且是 非常 相似的。它们都从一个或多个源对象到目标对象进行
嘿,我对typo3很陌生,我想建立一个网站。我正在运行10.4版。安装了引导程序包的类型3中的4个。我已经试着跟着导游走了https://docs.typo3.org/typo3cms/extensions/gridelements/stable/ 我已将打字稿复制到模板设置中,但前端没有输出。记住我是新手,所以我还不能很好地理解打字稿<那我能做些什么呢? 编辑:我想使用GriElements,这
我正在将一个应用程序从旧版本的wicket迁移到wicket 8。一些页面工作正常(简单页面,如登录)。这些页面不使用扩展机制。当我访问具有该机制的页面时,该机制不起作用。我不知道这是否是一个bug,但我尝试了所有的方法,但没有找到解决方案。我正在使用wicket 8.0.0-M5(我知道这不是一个稳定的版本)。有人有同样的问题吗?这是我的代码: WerklijstPagexxx.html Wer