我有一个数组localData定义为:
public localData: Array<any> = [];
在下面的示例中,其长度为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)
我需要将DataSource值替换为空白(如果有空白或其他任何值)。 我尝试这样做:
this.localData.forEach(x => x.DataSource ? '' || 'XXX' : 'MyVAL');
此代码不会引发任何错误,但DataSource仍为空白。 有没有人曾经遇到过这个问题,或者知道为什么会这样?
答案 0 :(得分:4)
您没有使用分配。 正如Doc所解释的,forEach为每个元素运行提供的函数,如果x.DataSource存在,则函数仅返回一个布尔值,否则返回一个字符串。
如果您的目标是更改数组,则可以通过赋值来修改函数:
this.localData = this.localData.map( item => {
item.DataSource = item.DataSource ? '' || 'XXX' : 'MyVAL'
return item;
});
或仅使用地图功能
public static interface Parcelable.ClassLoaderCreator implements Creator<T>
android.os.Parcelable.ClassLoaderCreator<T>
说明: 在您的代码行中
this.localData.forEach(x => x.DataSource?''||'XXX':'MyVAL');
如果未定义x.DataSource或空字符串,则三元运算符将返回“ MyVAL”,如果其他所有情况,则始终返回“ XXX”。 如果我做对了,您想做类似的事情:
x.DataSource && x.DataSource!==? 'MyVAL':x.DataSource;
,它可以理解为:如果对DataSource进行了评估,并且与“ XXX”不同,请分配“ MyVal”,否则保持不变。
编辑:澄清
答案 1 :(得分:1)
尝试这种方式: this.localData.forEach(x =>(!x.DataSource || x.DataSource ==='XXX')?'MyVAL':x.DataSource);
哪里 !x.DataSource表示x.DataSource ===''
答案 2 :(得分:1)
您可以使用以下地图功能:
var origin = [{Country: "United States",
DataSource: "",
FunctionName: "Customer Service"},
{
Country: "United States",
DataSource: "US",
FunctionName: "Customer Service"
}
]
origin = origin.map(function(item){ if(item.DataSource == '')
{
item.DataSource = 'XXX'
}
else{
item.DataSource = 'MyVAL';
}
return item;})
答案 3 :(得分:1)
您可以过滤数组以找到要替换的DataSource
值的项目,并在过滤后的项目上调用forEach
以替换值:
this.localData
.filter(x => ["", "XXX"].indexOf(x.DataSource) >= 0)
.forEach(x => x.DataSource = "MyVAL");
有关演示,请参见this stackblitz。
答案 4 :(得分:1)
尝试(。{of {.3}}}
for (let item of this.localData) {
item.DataSource = item.DataSource ? 'XXX' : 'MyVal';
}