我有一个JavaScript数组,如:
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
Run Code Online (Sandbox Code Playgroud)
我将如何将单独的内部数组合并为:
["$6", "$12", "$25", ...]
Run Code Online (Sandbox Code Playgroud) 我正在尝试熟悉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) 如果之前有人问过我,我很抱歉,但我找不到答案.如何在具有嵌套数组的数组中循环并在控制台中打印出项目出现的实例数?
因此,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)
我想定义一个函数.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中展平数组,但我在这里想知道的是如何使用特定的参数.
我有一个类似的阵列
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)
提前致谢.!