【问题标题】:Changing attributes of an object under conditions在条件下更改对象的属性
【发布时间】:2020-04-11 07:40:37
【问题描述】:

我想在某些条件下更改属性的值,如下面的代码中所述,但我不想用于循环。我认为 .map() 可能很有用,但我不知道如何。 这是(工作)示例代码:

class Replace {
    constructor(){
        this.Numbers = [
            {number:'1', feature:'A'},
            {number:'2', feature:'B'},
            {number:'2', feature:'C'},
            {number:'3', feature:'D'},
        ]
    }

    ReplaceNumbersWithWords (){
        for(this.i=0;this.i<this.Numbers.length;this.i++)
        if(this.Numbers[this.i].number==='1'){
            this.Numbers[this.i].number='one'
        }
        else if (this.Numbers[this.i].number==='2'){
            this.Numbers[this.i].number='two'
        }
        else if (this.Numbers[this.i].number==='3'){
            this.Numbers[this.i].number='three'
        }
        console.log(this.Numbers)
    }
}

const replace = new Replace()
replace.ReplaceNumbersWithWords()

如您所见,我想更改数组“this.Numbers”中每个对象的属性“number”,如何以最有效的方式(不使用 for 循环)?

输出必须是:

[
  { number: 'one', feature: 'A' },
  { number: 'two', feature: 'B' },
  { number: 'two', feature: 'C' },
  { number: 'three', feature: 'D' }
]

【问题讨论】:

    标签: javascript arrays class array.prototype.map


    【解决方案1】:

    希望这是您正在寻找的一种映射

    class Replace {
      constructor() {
        this.Numbers = [
          { number: '1', feature: 'A' },
          { number: '2', feature: 'B' },
          { number: '2', feature: 'C' },
          { number: '3', feature: 'D' }
        ];
    
        this.mapRef = [
          { key: '1', value: 'one' },
          { key: '2', value: 'two' },
          { key: '3', value: 'three' }
        ];
      }
    
      ReplaceNumbersWithWords() {
        const newArr = this.Numbers.map(item => {
          return {
            number: this.mapRef.find(num => num.key === item.number).value,
            feature: item.feature
          };
        });
        console.log(newArr);
      }
    }
    
    const replace = new Replace();
    replace.ReplaceNumbersWithWords();

    【讨论】:

      猜你喜欢
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      相关资源
      最近更新 更多