我创建了一个反应形式,当我创建formBuilder.group
时,我想为数组中的对象设置下一个ID
JSON
this.getData = [{
"id": 0,
"first_name": "Aaaa",
"last_name": "Aaa aaaa"
}, {
"id": 1,
"first_name": "Bbbb",
"last_name": "Bbb Bbbbbb"
}, {
"id": 2,
"first_name": "Cccc",
"last_name": "Cccccc"
}]
ngOnInit() {
this.form = this.formBuilder.group({
id: Math.max.apply(
Math,
this.getData.map(function(o) {
return o.id + 1;
})
),
first_name: "",
last_name: ""
});
}
但是为此Math.max.apply
我得到了null
这里有什么方法可以调用该函数吗?
我也尝试像这样在formBuilder之外制作函数
getNextId(){
Math.max.apply(
Math,
this.getData.map(function(o) {
return o.id + 1;
})
)}
,然后像这样在formBuilder.group
中调用函数
id: this.getNextId()
但还是一样...
如果我在表格外调用此函数,则会得到正确的数字 thnx
答案 0 :(得分:1)
正如MDN上的documentation一样,您有几种从数字数组中获取最大值的方法(这里我已经完成+1
来获取下一个ID)。
使用reduce()
:
getNextId() {
return this.getData.map(d => d.id).reduce((a, b) => Math.max(a, b)) + 1;
}
使用apply()
:
getNextId() {
return Math.max.apply(null, this.getData.map(d => d.id)) + 1;
}
使用点差运算符:
getNextId() {
return Math.max(...this.getData.map(d => d.id)) + 1;
}