我试图压扁阵列,但我遇到了困难.
我的代码:
var arr = [["2"],["3", "4"], "5", [["6"], ["7"]] ];
var res = [].concat.apply([], arr);
//Using reduce(ES5)
function test(args){
var sum = args.reduce(function(acc, val){
acc.concat(Array.isArray(val)? test(val): val);
});
}
//Regular implementation
function test2(arr){
var result = [];
arr.forEach(function(val){
if(Array.isArray(val)){
result = [].concat.apply([], val);
} else {
result.concat(val);
}
});
return result;
}
console.log(test(arr));
console.log(test2(arr));Run Code Online (Sandbox Code Playgroud)
预期产出:
["2", "3", "4","5", "6", "7"]
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我哪里出错了吗?
我对打字稿很陌生,我正在努力学习这门语言。
我正在阅读一个组件,我看到了这个:
interface FilterRowProps {
cannotRemove: boolean
filterName?: string
}
const field = getField(demo.fields)(filterName!)
Run Code Online (Sandbox Code Playgroud)
问题:
这让我想到,!打字稿中的含义是什么?
如果它没有被传递(可选参数?)它会抛出错误还是不做任何事情会发生什么?
将参数设为可选并!在组件内部使用是否有意义?
既然filterNameprops 是可选的,那filterName!意味着什么?
有人可以解释一下吗?超级糊涂。
我有一个函数,我试图从选项中解构几个参数
fetchArtifactsWithFiltersOG = async options => {
const { nextPage, fromSearch } = options;
}
Run Code Online (Sandbox Code Playgroud)
问题:
但是,在某些用例中options are not passed,在这种情况下它会抛出nextPage of undefined error.
在这种情况下我如何解构我不确定选项是否只是有时被传递。没有使我的语法 ES5。
我只是在学习来自ES5功能的ES6。
某些事情确实让我感到困惑:
我们有出口,例如,
function B(){
// Some definition
}
exports.modules = B();
Run Code Online (Sandbox Code Playgroud)
如果我们使用基于类的语法,那是否意味着我们根本不需要导出?(如果不是,我们该怎么写?)您实际上何时需要使用导出?(与使用“ new”关键字调用构造函数相反)。有什么不同?
个人想法:
ES6感觉就像我正在用javascript编写Java代码:-\我喜欢函数式编程,但看起来ES6是必经之路(我的一部分讨厌新语法,但另一半却想尝试一下。。有人在这里吗? )
请赐教。