如何在不声明的情况下使用新数组扩展数组

时间:2019-08-23 08:48:54

标签: javascript

我正在研究需要从API返回的json数据维护数组的项目,json可以有树,我的以下代码可以正常工作,但是我希望在将值赋给数组元素之前删除条件

// data contains json 
let newArray = []
for(let d in data){
    for(let x in data[d]){
        if(typeof(newArray[d]) === 'undefined'){
            newArray[d] = []
        }
        if(typeof(newArray[d][data[d][x]['id']]) === 'undefined'){
            newArray[d][data[d][x]['id']] = []
        }
        newArray[d][data[d][x]['id']]['price'] = data[d][x]['price']
        newArray[d][data[d][x]['id']]['discount'] = data[d][x]['discount']
    }
}

在上面的代码中,我必须首先检查数组,如果没有,则将其声明为数组,否则它将返回未定义的错误,是否有任何方法可以摆脱那里的条件并根据要求扩展数组?

2 个答案:

答案 0 :(得分:2)

您可以像这样使用新的ES6传播算子

CREATE PROCEDURE MYLIB/TESTPROC
    LANGUAGE C 
    SPECIFIC MYLIB/TESTPROC 
    NOT DETERMINISTIC 
    NO SQL 
    CALLED ON NULL INPUT 
    EXTERNAL NAME 'MYLIB/TESTPRG' 
    PARAMETER STYLE GENERAL ;

就像本片段中的此处一样,我直接做newAraay[d] = [...newArray,...Array(data[d][x]['id']),[...Array('price',data[d][x]['price'])]] 而不显式地初始化它们

abc[1][3][4] = "new value"

答案 1 :(得分:1)

newArray[d] = newArray[d] || []

You can understand this operation in this post

或使用Lodash库

https://lodash.com/docs/4.17.11#set