相关疑难解决方法(0)

创建零填充JavaScript数组的最有效方法?

在JavaScript中创建任意长度零填充数组的最有效方法是什么?

javascript arrays

552
推荐指数
22
解决办法
32万
查看次数

在JavaScript中转置2D数组

我有一个数组数组,如:

[
    [1,2,3],
    [1,2,3],
    [1,2,3],
]
Run Code Online (Sandbox Code Playgroud)

我想转置它以获得以下数组:

[
    [1,1,1],
    [2,2,2],
    [3,3,3],
]
Run Code Online (Sandbox Code Playgroud)

使用循环以编程方式执行此操作并不困难:

function transposeArray(array, arrayLength){
    var newArray = [];
    for(var i = 0; i < array.length; i++){
        newArray.push([]);
    };

    for(var i = 0; i < array.length; i++){
        for(var j = 0; j < arrayLength; j++){
            newArray[j].push(array[i][j]);
        };
    };

    return newArray;
}
Run Code Online (Sandbox Code Playgroud)

然而,这看起来很笨重,我觉得应该有一种更简单的方法.在那儿?

javascript arrays transpose matrix

135
推荐指数
10
解决办法
7万
查看次数

如何在JavaScript中压缩两个数组?

我有2个数组:

var a = [1, 2, 3]
var b = [a, b, c]
Run Code Online (Sandbox Code Playgroud)

我想得到的结果是:

[[1, a], [2, b], [3, c]]
Run Code Online (Sandbox Code Playgroud)

这看起来很简单,但我无法弄清楚.

我希望结果是一个数组,两个数组中的每个元素都压缩在一起.

javascript arrays

83
推荐指数
3
解决办法
7万
查看次数

Javascript - 在单次迭代中求和两个数组

我想将一个数字数组的每个值与不同数字数组中的相应值相加,我想这样做而不循环遍历每个单独的值.
所以:

var array1 = [1,2,3,4];
var array2 = [5,6,7,8];

var sum    = [6,8,10,12];
Run Code Online (Sandbox Code Playgroud)

但是,我喜欢一下子做到这一点,而不是这样做:

for(var i = 0; i < array1.length; i++){
   sum.push(array1[i] + array2[i]);
}
Run Code Online (Sandbox Code Playgroud)

谁能想到办法?我很难过.

javascript arrays loops

29
推荐指数
4
解决办法
5万
查看次数

forEach 在 javascript 中同时循环遍历两个数组

我想构建一个for同时遍历两个变量的循环。n是一个数组,j从 0 到 16。

var n = [1,2,3,5,7,8,9,11,12,13,14,16,17,18,20,21,22];
var m = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];

m.forEach(k => {
    n.forEach(i => {
        console.log(i, k)
    });
};
Run Code Online (Sandbox Code Playgroud)

最终结果应该输出:

1,0
2,1
3,2
5,3
(...)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个循环由于某种原因没有这样做,因为它每个数字重复 17 次。

我在这里缺少什么?

javascript foreach for-loop vue.js

24
推荐指数
1
解决办法
3万
查看次数

Javascript ES6 - 映射多个数组

JavaScript 6中是否有允许映射多个数组的功能?

像拉链一样的东西:

 var myFn = function (a, b) { console.log(a, b);}
  var arr1 = ['a', 'b', 'c'];
  var arr2 = [1, 2, 3];

  arr1.map(myFn, arr2); // imaginary syntax.
  // prints :
  // a 1
  // b 2
  // c 3
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

11
推荐指数
3
解决办法
2万
查看次数

是否可以在Underscore.js中同时迭代两个列表?

我基本上想要使用_.each()_.map()在Underscore.js中表达以下行为.

a = [1, 2, 3]
b = [3, 2, 1]

# Result list
c = [0, 0, 0]

for i in [0 .. a.length - 1]
   c[i] = a[i] + b[i]
Run Code Online (Sandbox Code Playgroud)

这在Matlab(我的主要语言)中绝对是可能的:

c = arrayfun(@(x,y) x+y, a, b)
Run Code Online (Sandbox Code Playgroud)

直觉上,感觉Underscore中的语法应该是:

c = _.map(a, b, function(x, y){ return x + y;})
Run Code Online (Sandbox Code Playgroud)

但是,该参数列表是不可接受的; 第二个参数应该是一个可调用的函数.

在这种情况下,可选的"上下文"参数对我没有帮助.

functional-programming underscore.js

10
推荐指数
1
解决办法
4972
查看次数

在javascript中迭代数组和concat

说我有一个数组[["a", "b"], ["c", "d"]],我如何迭代或减少或映射或加入这个数组并得到["ac", "ad", "bc", "bd"],如果数组像[["a", "b"], ["c", "d"], ["e", "f"]]我应该得到的一样["ace", "acf", "ade", "adf", "bce", "bcf", "bde", "bdf"]

我们如何使用数组迭代或方法来实现这一点?

我尝试使用reduce:

const output = [];
const sol = array.reduce((cum, ind) => {
  for (let i = 0; i <= cum.length; i++ ) {
    for (let j = 0; j <= ind.length; j++) {
      output.push(`${cum[i]} + ${ind[j]}`);
    }
  }
});
console.log(output);
Run Code Online (Sandbox Code Playgroud)

但我没有得到确切的输出。

javascript arrays typescript

8
推荐指数
1
解决办法
182
查看次数

JS - 在函数中覆盖'this'

我正在尝试扩展Array原型:

Array.prototype.rotate = function() {
  var arr = [];
  for (var i = 0; i < this[0].length; ++i) {
    arr[i] = [];
    for (var j = 0; j < this.length; ++j) {
      arr[i].push(this[j][i])
    }
  }
  this = arr;
  return arr;
}
Run Code Online (Sandbox Code Playgroud)

完全花花公子,直到this = arr.那爆炸了.

如何重新分配this原型功能的属性?我希望地狱能够处理以前的阵列配置.

编辑

我为什么这样做?我希望它的行为与其他数组函数一样.例如,这有效:

myArray.pop();
Run Code Online (Sandbox Code Playgroud)

我不需要这样做:

myArray = myArray.pop();
Run Code Online (Sandbox Code Playgroud)

另一个编辑

我这样做是为了解决它,但它似乎很愚蠢:

Array.prototype.rotate = function() 
{
  var arr = [];
  var len = this[0].length;
  for (var i = 0; i < len; ++i) { …
Run Code Online (Sandbox Code Playgroud)

javascript object

5
推荐指数
1
解决办法
1522
查看次数

将二维数组转换为交替其值的一维数组

我有一个像这样的二维数组:

let test2d = [
  ["foo", "bar"],
  ["baz", "biz"]
]
Run Code Online (Sandbox Code Playgroud)

如果我想将这个2D数组转换为1D数组(不交替它们的值),我可以通过两种方式实现:

第一种方式:

let merged = test2d.reduce( (prev, next) => prev.concat(next) )
console.log(merged) // ["foo", "bar", "baz", "biz"]
Run Code Online (Sandbox Code Playgroud)

第二种方式:

let arr1d = [].concat.apply([], test2d)
console.log(arr1d) // ["foo", "bar", "baz", "biz"]
Run Code Online (Sandbox Code Playgroud)

问题:如何获得一维数组但其值交替出现?我的意思是这样的:

["foo", "baz", "bar", "biz"]
Run Code Online (Sandbox Code Playgroud)

javascript arrays loops multidimensional-array

5
推荐指数
1
解决办法
88
查看次数