Sil*_*ish 1 arrays foreach typescript angular
我有一个数组 localData 定义为:
public localData: Array<any> = [];
Run Code Online (Sandbox Code Playgroud)
在下面的示例中,它的长度为 2,并且在开发人员工具中具有以下值。
(2) [{…}, {…}]
0:
Country: "United States"
DataSource: ""
FunctionName: "Customer Service"
GroupName: "Main"
Index: 0
Result: undefined
StartDate: "5/1/2012"
StopDate: "
"
1:
Country: "United States"
DataSource: ""
FunctionName: "Customer Service"
GroupName: "Main"
Index: 1
Result: undefined
StartDate: ""
StopDate: "5/1/2019
"
__proto__: Object
length: 2
__proto__: Array(0)
Run Code Online (Sandbox Code Playgroud)
我需要将 DataSource 值替换为某个值(如果为空或者它有任何其他值)。我试着做:
this.localData.forEach(x => x.DataSource ? '' || 'XXX' : 'MyVAL');
Run Code Online (Sandbox Code Playgroud)
此代码不会引发任何错误,但 DataSource 仍保持空白。有没有人以前遇到过这个问题,或者知道为什么会这样?
Koo*_*op4 12
你没有使用赋值。正如Doc解释的那样, forEach 为每个元素运行提供的函数,如果 x.DataSource 存在,您的函数只返回一个布尔值,否则返回一个字符串。
如果您的目标是更改数组,则可以通过赋值修改函数:
this.localData.forEach(x => {
x.DataSource = x.DataSource ? '' || 'XXX' : 'MyVAL'
});
Run Code Online (Sandbox Code Playgroud)
或者干脆使用地图功能
this.localData = this.localData.map( item => {
item.DataSource = item.DataSource ? '' || 'XXX' : 'MyVAL'
return item;
});
Run Code Online (Sandbox Code Playgroud)
说明:在您的代码行中
this.localData.forEach(x => x.DataSource ? '' || 'XXX' : 'MyVAL');
如果 x.DataSource 未定义或空字符串,三元运算符将返回 'MyVAL',如果所有其他情况,则始终返回 'XXX'。如果我做对了,你想做这样的事情:
x.DataSource && x.DataSource !== 'XXX' ? 'MyVAL' : x.DataSource;
可以理解为:如果 DataSource 被评估并且它不同于 'XXX' 分配 'MyVal',否则保持原样。
编辑:澄清
| 归档时间: |
|
| 查看次数: |
33080 次 |
| 最近记录: |