Declaring array of objects

前端 未结 15 1327
遇见更好的自我
遇见更好的自我 2020-12-02 07:01

I have a variable which is an array and I want every element of the array to act as an object by default. To achieve this, I can do something like this in my code.



        
相关标签:
15条回答
  • 2020-12-02 07:24

    The below code from my project maybe it good for you

      reCalculateDetailSummary(updateMode: boolean) {
    
        var summaryList: any = [];
        var list: any;
        if (updateMode) { list = this.state.pageParams.data.chargeDefinitionList }
        else {
            list = this.state.chargeDefinitionList;
        }
    
        list.forEach((item: any) => {
            if (summaryList == null || summaryList.length == 0) {
                var obj = {
                    chargeClassification: item.classfication,
                    totalChargeAmount: item.chargeAmount
                };
                summaryList.push(obj);
    
            } else {
                if (summaryList.find((x: any) => x.chargeClassification == item.classfication)) {
                    summaryList.find((x: any) => x.chargeClassification == item.classfication)
                        .totalChargeAmount += item.chargeAmount;
                }
            }
        });
    
        if (summaryList != null && summaryList.length != 0) {
            summaryList.push({
                chargeClassification: 'Total',
                totalChargeAmount: summaryList.reduce((a: any, b: any) => a + b).totalChargeAmount
            })
        }
    
        this.setState({ detailSummaryList: summaryList });
    }
    
    0 讨论(0)
  • 2020-12-02 07:25

    Using forEach we can store data in case we have already data we want to do some business login on data.

    var sample = new Array();
    var x = 10;
    var sample = [1,2,3,4,5,6,7,8,9];
    var data = [];
    
    sample.forEach(function(item){
        data.push(item);
    })
    
    document.write(data);
    

    Example by using simple for loop

    var data = [];
    for(var i = 0 ; i < 10 ; i++){
       data.push(i);
    }
    document.write(data);
    
    0 讨论(0)
  • 2020-12-02 07:26

    Try this-

    var arr = [];
    arr.push({});
    
    0 讨论(0)
  • 2020-12-02 07:34

    You can instantiate an array of "object type" in one line like this (just replace new Object() with your object):

    var elements = 1000;
    var MyArray = Array.apply(null, Array(elements)).map(function () { return new Object(); });
    
    0 讨论(0)
  • 2020-12-02 07:37

    Use array.push() to add an item to the end of the array.

    var sample = new Array();
    sample.push(new Object());
    

    you can use it

    var x = 100;
    var sample = [];
    for(let i=0; i<x ;i++){
      sample.push({}) 
      OR
      sample.push(new Object())
    }    
    
    0 讨论(0)
  • 2020-12-02 07:37

    If you want all elements inside an array to be objects, you can use of JavaScript Proxy to apply a validation on objects before you insert them in an array. It's quite simple,

    const arr = new Proxy(new Array(), {
      set(target, key, value) {
        if ((value !== null && typeof value === 'object') || key === 'length') {
          return Reflect.set(...arguments);
        } else {
          throw new Error('Only objects are allowed');
        }
      }
    });
    

    Now if you try to do something like this:

    arr[0] = 'Hello World'; // Error
    

    It will throw an error. However if you insert an object, it will be allowed:

    arr[0] = {}; // Allowed
    

    For more details on Proxies please refer to this link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

    If you are looking for a polyfill implementation you can checkout this link: https://github.com/GoogleChrome/proxy-polyfill

    0 讨论(0)
提交回复
热议问题