在嵌套FormArray中查找最小值

时间:2018-11-02 15:12:51

标签: angular typescript

在我的角向项目中,我的一种表单具有以下结构:

this.serviceForm = this.formBuilder.group({
  [...],
  options: this.formBuilder.array([
    this.formBuilder.group({
      [...],
      availabilities: this.formBuilder.array([
        this.formBuilder.group({
          [...],
          price: ['', Validators.required]
        })
      ])
    })
  ])
});

我想在我的表格中找到最低价格。 我已经尝试过了,但是我敢肯定有更好的方法:

getMinPrice(serviceForm: FormGroup) {
  let min = serviceForm.value.options[0].availabilities[0].price;

  serviceForm.value.options.forEach(i => {
    i.availabilities.forEach(j => {
      if (j.price < min) {
        min = j.price;
      }
    });
  });

  return min;
}

感谢您的回答。

2 个答案:

答案 0 :(得分:0)

考虑到您不关心分钟的上下文。价格,您可以简单地跨嵌套对象收集价格值,然后执行最小值。使用 mDatabaseReference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { AlaramData usersList = dataSnapshot.getValue(AlaramData.class); String name = usersList.getStatus(); childList.add(usersList); // here you can access to name property like university.name } Log.d("", "Value is: " + childList); //Create a List of Section DataModel implements Section sections.add(new SectionHeader(childList, "2018", 1)); adapterRecycler.notifyDataSetChanged(); } 搜索。

尝试以下操作:

Math.min

侧注:接口通常是不完整的,我定义它们是为了在编辑器中进行类型推断。

答案 1 :(得分:-1)

您可以使用apply对数组运行标准的Math方法:

const values = [3, 5, 6, 2, 45, 6, 32];

const min = Math.min.apply(null, values);
const max = Math.max.apply(null, values);

console.log(min, max);

因此,您只需选择j.price值并通过该机制运行它们即可。