Angular 6 объединяет два массива для подсчета длины ключа - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть массив из двух объектов, который имеет другой массив объектов, я хочу подсчитать количество всех объектов свойства "значение" в следующем примере.

var data = [
  { 
  "x": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
},   { 
  "y": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
}
];

Я использовал следующую логику: -

  let _data = data.RESULT;
      console.log(JSON.stringify(_data));
      _data.forEach(element => {
        this.someObj = element;
      });

Ожидаемый результат должен быть свойством длины значений, т.е. 4

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Если вы хотите найти только длину массива "values", вам нужно сделать это

data = [
  { 
  "x": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
},   { 
  "y": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
}
]

length = 0;

constructor() {
  this.data.forEach((d) => {
    length = length + d.values.length;
  });
  console.log('length', length);
}

https://stackblitz.com/edit/angular-3daqcy?file=src%2Fapp%2Fapp.component.ts

0 голосов
/ 20 сентября 2018

Если вы хотите сделать это в одной строке, то вы можете сделать это с помощью map и reduce, map создает новый массив с элементами в качестве длины свойства values и reduceвычисляет сумму новых элементов массива.Что дает вам сумму длины всех values массивов свойств.

Вот код ниже -

let data = [
  { 
  "x": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
},   { 
  "y": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
}
];

let totalLength = data.map(x => x.values.length).reduce((a,b) => a+b,0);
console.log(temparr);

Вот рабочий Stackblitz с Angular 6

https://stackblitz.com/edit/hello-angular-6-ewa5tb?file=src/app/app.component.ts

0 голосов
/ 20 сентября 2018

Создана функция, которая добавляет длины массива values

var arr = [
  { 
  "x": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
},   { 
  "y": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
}
]

function getKeysLength(arr){
  var count  = 0;
  arr.forEach((val)=>{count= count+ val.values.length})
  return count
}

var ans  = getKeysLength(arr);
console.log("ans",ans);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...