在数组上映射或forEach以操纵值并生成一个新数组

时间:2019-03-04 13:02:03

标签: javascript angular functional-programming

我将formArray转换为一个包含两个控件的数组(基本上看起来像数组,但是它是一个可迭代的对象),之后我在其上使用forEach来操纵对象属性并生成一个新数组

(Array.from(this.createCandyPixelForm.value.urlRows)).forEach(x => {
  newArray.push(x);
  if (x['url'] == (null || ' ' || false)) {
    x['url'] = 0;
  }
})

2 个答案:

答案 0 :(得分:2)

您可以将新的独立对象映射到newArray,并检查url属性并将伪造的值替换为零

newArray = Array.from(
    this.createCandyPixelForm.value.urlRows,
    x => Object.assign({}, x, { url: x.url !== ' ' && x.url || 0 })
);

答案 1 :(得分:-1)

在对代码进行了某些实验之后,我得到了想要的答案。也许我无法正确询问。所以这就是我所做的: 我从formArray“ urlRows”创建了一个数组,然后为该数组中的所有对象操纵了“ httpsOnly”属性的值。

const newArray = this.createCandyPixelForm.value.urlRows;
        newArray.map(x => {
            console.log("x is", x);
            if (!x.httpsOnly) x.httpsOnly = 0;
            else x.httpsOnly = 1;
        })