2017-09-11 38 views
-1

我想在javascript中设置多个数组键,javascript批量添加键

但这样的代码太难看了。但只有这样才能正确运作。

var listData = []; 
 
listData['today'] = []; 
 
listData['data1'] = []; 
 
listData['data2'] = []; 
 
listData['data3'] = []; 
 
listData['data4'] = []; 
 
listData['data5'] = []; 
 
listData['data6'] = []; 
 
listData['data6'] = [];

我尝试这初始化数组

function initArray(arr, keys, defaultValue) { 
 
    for (var i = 0; i < keys.length; i++) { 
 
     var key = keys[i]; 
 
     delete arr[key]; 
 
     arr[key] = defaultValue; 
 

 
    } 
 
    return arr; 
 
}

但设置后阵,

我把数据通过它(dataalist [i] .num) listData ['data2']。push(datalist [i] .num) 。 返回数组中所有相同的data1和data2。

希望有人可以帮助这个批次添加数组的键。

+0

阵列一般不会命名键,如'data1',只是数字指标 – adeneo

+0

你正在寻找一个_object_'的ListData = {}' –

+0

@adeneo:嗯,他们这样做,如果添加他们,因为标准数组是对象...但是,OP可能需要一个非数组对象(或将数组用作数组)。 –

回答

0

尝试修改该推送方法。

var listData = []; 
var keys = [ 'today', 'data', 'daata' ]; 
initObject(keys); 

function initObject(params) { 
    for (i=0; i<params.length; i++) { 
     var x = params[i] 
     listData.push(x) 
    } 
} 
0

使用对象而不是数组:

var listData = {}; 
var keys = ['today', 'data1', 'data2']; 

function initObject(obj, keys, defaultValue) { 
    keys.forEach(key => { 
    obj[key] = []; 
    }) 
    return obj; 
} 

console.log(initObject(listData, keys, []));