Javascript 添加条件以使用TypeScript循环创建对象

Javascript 添加条件以使用TypeScript循环创建对象,javascript,angular,typescript,Javascript,Angular,Typescript,因此,我的代码中有一个循环,它本质上是获取一个日期数组,并将每个日期作为键/值对(“日期”:“日期[I]”)添加到数组中的每个对象(值) 问题是,我的'values'数组中的某些位置是'null',我收到一个'ERROR TypeError:无法将属性'date'设置为null' 我怎样才能适应这个?有没有一种方法可以使用TypeScript为那些“null”值包含catch/conditional,并用包含该(“date”:“dates[i]”)键/值对的新对象替换它们 比如: values.

因此,我的代码中有一个循环,它本质上是获取一个日期数组,并将每个日期作为键/值对(“日期”:“日期[I]”)添加到数组中的每个对象(值)

问题是,我的'values'数组中的某些位置是'null',我收到一个'ERROR TypeError:无法将属性'date'设置为null'

我怎样才能适应这个?有没有一种方法可以使用TypeScript为那些“null”值包含catch/conditional,并用包含该(“date”:“dates[i]”)键/值对的新对象替换它们

比如:

values.forEach((obj, i) => 

    if (values[i]==null){
        values[i]=={}
        values[i].date == dates[i]
       }
    else {
        obj.date = dates[i]
       }
);
values.forEach((obj, i) => {
 if (!obj) {
   obj = {date: dates[i]};
 }
 obj.date = dates[i];
});
如果有关系的话,我用Angular 5组件来写这个,从技术上讲,它们是this.values和this.dates


我很难弄明白这一点。谢谢

您想要的行为可以通过以下方式实现:

values = values.map((obj, i) => {
 if (!obj) {
   return {date: dates[i]};
 }
 obj.date = dates[i];
 return obj;
});
在这种情况下,Array.map比Array.forEach更合适,因为您的意思是对数组上的对象进行更改(Array.map在每次迭代时为位置返回一个新对象,在所有迭代结束时返回一个新数组)

如果使用Array.forEach,可以更改数组中某个现有对象的某些属性,但不能进行如下操作:

values.forEach((obj, i) => 

    if (values[i]==null){
        values[i]=={}
        values[i].date == dates[i]
       }
    else {
        obj.date = dates[i]
       }
);
values.forEach((obj, i) => {
 if (!obj) {
   obj = {date: dates[i]};
 }
 obj.date = dates[i];
});

“if”中的代码不会产生预期的效果(数组中的obj将继续为null),因为每个对象只是引用数组中相应的元素。

我的回答对您有帮助吗?是的!对不起,我忘记回复了,谢谢!