相关疑难解决方法(0)

在JavaScript中合并/展平数组数组?

我有一个JavaScript数组,如:

[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
Run Code Online (Sandbox Code Playgroud)

我将如何将单独的内部数组合并为:

["$6", "$12", "$25", ...]
Run Code Online (Sandbox Code Playgroud)

javascript arrays flatten

1001
推荐指数
36
解决办法
61万
查看次数

如何正确使用尖头仿函数

我正在尝试熟悉JavaScript中的函数式编程.我刚看到指针仿函数是:

具有of将任何单个值放入其中的函数的对象.

ES2015增加了Array.of使数组成为一个尖锐的算符.

而我的问题是"单一价值"究竟意味着什么?

我想制作一个Functor/Container(如https://drboolean.gitbooks.io/mostly-adequate-guide/content/ch8.html),它将给定尺寸(宽度,高度)的网格保持为一维数组,允许我对它进行转换.作为一个普通的对象,我会把它存储为{ width: 2, height: 2, list: [1, 2, 3, 4] }但我想把它放在一个仿函数中,我不知道如何正确地做.

我知道使用像这样的尖头仿函数存储单个值是完全没问题的:

Container.of(47)
Run Code Online (Sandbox Code Playgroud)

但是,如果对象是"单值",那么将对象用作值是否可以:

Grid.of({ width: 2, height: 2, list: [1, 2, 3, 4] })
Run Code Online (Sandbox Code Playgroud)

或者甚至像这样:

Grid.of(2, 2, [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

javascript functional-programming functor

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

递归循环数组并返回项目数?

如果之前有人问过我,我很抱歉,但我找不到答案.如何在具有嵌套数组的数组中循环并在控制台中打印出项目出现的实例数?

因此,console.log应该打印名称为"bob"的数字2,因为"bob"在数组中出现两次.

这是我的阵列和我到目前为止所拥有的:

    var names = ["bob", ["steve", "michael", "bob", "chris"]];

    function loop(arr, item) {
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] instanceof Array) {
          loop(arr[i], item);
        } else {
          if (arr[i] == item) {
            console.log(arr[i]);
          }
        }
      }
    }

    loop(names, "bob");
Run Code Online (Sandbox Code Playgroud)

javascript arrays recursion

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

你如何在参数而不是特定的数组或对象上使用.reduce()?

我想定义一个函数.flatten,它将几个元素展平为一个单独的数组.我知道以下是不可能的,但基本上我想这样做:

var flatten = function() {
   var flattened = arguments.reduce(function(acc, elem) { return acc.concat(elem) }, []);
   return flattened;
}; 

var arr = [[1,2,3], 4, 5, [6, 7]];
console.log(flatten(arr)) // => [1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

TypeError: arguments.reduce is not a function
Run Code Online (Sandbox Code Playgroud)

我理解上面的错误是因为参数只是类似数组,所以它没有真正数组的全部功能.所以有以下内容,但我想知道是否有更清洁的东西:

var flatten = function() {
  var flattened = [].reduce.call(arguments, function(acc, elem) { return acc.concat(elem) });
  return flattened;
};
Run Code Online (Sandbox Code Playgroud)

使用.reduce()重写.flatten的好方法吗?

注意:我知道还有很多其他方法可以在javascript中展平数组,但我在这里想知道的是如何使用特定的参数.

javascript reduce arguments flatten

2
推荐指数
1
解决办法
4774
查看次数

Javascript:如何将数组元素传播到所有其他元素并创建单个数组

我有一个类似的阵列

var arr = [["one", "two"],["three", "four"],["five", "six", "seven"],["eight", "nine"]];
Run Code Online (Sandbox Code Playgroud)

我试图让所有元素联合起来,但是同一个子数组中的元素不能复制.喜欢:

var output = ["one three four five six seven eight nine","two three four five six seven eight nine"];
Run Code Online (Sandbox Code Playgroud)

这将基于第一个子数组中的元素数量添加.我尝试过,但找不到任何解决方案.任何人都可以帮忙吗?
这是我试过的代码:

function big_for( data ){
    var aj = [];
    var k = 0;
    for( var i = 0; i < data.length; i++ ){
        for( var j = 0; j < data[i].length; j++ ){
            aj[k] = data[i][j];
            k++;
        } 
    }
    return arr;
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢.!

javascript arrays

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