生成多维动态javascript数组

时间:2015-10-27 07:17:21

标签: javascript

我正在尝试使用for循环生成n数组,并使用for循环将另一个元素从n推送到每个数组。

var userlist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'];

var selectlist = ['c', 'f', 'k'];

get_field_options = userlist.filter(function (el) {
    return selectlist.indexOf(el) < 0;
});

var selectlen = selectlist.length;
var op_arr = new Array();

for (var i = 0; i < selectlen; i++) {
    op_arr[i] = new Array();
    op_arr[i] = get_field_options;
    op_arr[i].push(selectlist[i]);
    console.log(op_arr[i]);
}

这是我的工作fiddle

但每次都会向同一个数组添加项目。我做错了什么?

2 个答案:

答案 0 :(得分:1)

此行op_arr[i] = get_field_options;使您的数组引用同一个对象。

您需要clone get_field_options才能获得新阵列。 克隆的一种简单方法是使用JSON.stringify。

op_arr[i] = JSON.parse(JSON.stringify(get_field_options));

答案 1 :(得分:0)

另一种方法是,使用mapconcat函数

var op_arr = selectlist.map(function(el){
    return get_field_options.concat(el);
});