循环将数组中的数字推送到新数组

时间:2018-01-23 09:32:55

标签: javascript arrays

我有以下代码无效。

    var array = [1, 3, 2]
    var newArray = []

  getNewArray() {
    for (let i = 0; i < array.length; i++) {
      for (let x = 0; x < array[i]; x++) {
        this.newArray.push(array[i]);
      }
    }
    console.log(this.newArray);
  }

我想要实现的是使用数组中的数字循环次数。结果如下所示

(3) [{…}, {…}, {…}]
   0:
     count:(1) [1]
   1:
     count:(3) [1,2,3]
   2:
     count:(2) [1,2]

现在显示为

(4) [1, 2, 2, 1]
  0: 1
  1: 2
  2: 2
  3: 1

4 个答案:

答案 0 :(得分:2)

由于您使用的是ES6功能,因此可以尝试.map + Array.from的组合。

思想:

  • 使用Array.map并循环遍历每个项目。
  • 使用此项目作为长度,并使用Array.from创建一个新数组。
  • 传递mapper函数以填充数组。

var array = [1, 3, 2];
var result = array.map((item) => Array.from({
  length: item
}, (_, i) => i + 1));
console.log(result)

答案 1 :(得分:1)

试试这个

&#13;
&#13;
var array = [1, 3, 2]
var newArray = []

function getNewArray() {
for (let i = 0; i < array.length; i++) {
	var tmp = [];
	for (let x = 0; x < array[i]; x++) {
		tmp.push(x+1);
	}
	this.newArray.push(tmp);

}
}
getNewArray();
console.log(this.newArray);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

&#13;
&#13;
var array = [1, 3, 2];
var newArray = [];

function getNewArray() {
    for (let i = 0; i < array.length; i++) {
      var tempArray = [];
      for (let x = 0; x < array[i]; x++) {
        tempArray.push(array[i]);
      }
      newArray.push(tempArray);
    }
    console.log(this.newArray);
}

getNewArray();
&#13;
&#13;
&#13;

答案 3 :(得分:0)

使用一些阵列魔法

&#13;
&#13;
var array = [1, 3, 2]
var newArray = []

let getNewArray = () => {
  newArray = array.map( x => Array(x).fill().map( (_,i) => i+1 ) )
  console.log(newArray);
}
getNewArray()
&#13;
&#13;
&#13;