Redian新闻
>
javascript的一个问题:不能用loop,不能用library,怎么来remove array里的偶数?
avatar
javascript的一个问题:不能用loop,不能用library,怎么来remove array里的偶数?# JobHunting - 待字闺中
W*o
1
今天被问到一个javascript的问题
限制是不能用任何loop,不能用任何library(只能用pure javascript),怎么来去除
一个integer array里面所有的偶数?
我的想法是:既然不让明着用loop, 我就想到了用.filter() 这个method,
比如:
var numbers = [1, 2, 3, 4, 5, 6, 7];
var oddNumbers = numbers.filter(function(val) {
return val % 2 != 0;
});
console.log(oddNumbers);
大家有什么好办法吗?
avatar
f*b
2
不用loop目测是考你函数式
JS本身就能玩FP
avatar
W*o
3
可是不让用loop,我只能想到用内置的function了

【在 f***b 的大作中提到】
: 不用loop目测是考你函数式
: JS本身就能玩FP

avatar
f*b
4
一个参考做法,只用push和shift
var numbers = [1, 2, 3, 4, 5, 6, 7];
var odds = [];
var loop = function(n) {
if(!n.length) return;
var last = n[0];
n.shift();
if(last % 2) odds.push(last);
loop(n);
}
loop(numbers);
console.log(odds);
avatar
S*y
5
高手,正解

【在 f***b 的大作中提到】
: 一个参考做法,只用push和shift
: var numbers = [1, 2, 3, 4, 5, 6, 7];
: var odds = [];
: var loop = function(n) {
: if(!n.length) return;
: var last = n[0];
: n.shift();
: if(last % 2) odds.push(last);
: loop(n);
: }

avatar
p*2
6
你这个solution有什么问题吗

【在 W***o 的大作中提到】
: 今天被问到一个javascript的问题
: 限制是不能用任何loop,不能用任何library(只能用pure javascript),怎么来去除
: 一个integer array里面所有的偶数?
: 我的想法是:既然不让明着用loop, 我就想到了用.filter() 这个method,
: 比如:
: var numbers = [1, 2, 3, 4, 5, 6, 7];
: var oddNumbers = numbers.filter(function(val) {
: return val % 2 != 0;
: });
: console.log(oddNumbers);

avatar
W*o
7
the .filter() method is from JavaScript API, which is not allowed

【在 p*****2 的大作中提到】
: 你这个solution有什么问题吗
avatar
p*2
8
shift push不算吗

【在 W***o 的大作中提到】
: the .filter() method is from JavaScript API, which is not allowed
avatar
h*k
9
应该是用Map吧
avatar
h*k
10
这个filter是pure javascript啊,不让用javascript api是个什么意思。。。
还有前面shift那个方法recursion效率太低了吧。。

【在 W***o 的大作中提到】
: 今天被问到一个javascript的问题
: 限制是不能用任何loop,不能用任何library(只能用pure javascript),怎么来去除
: 一个integer array里面所有的偶数?
: 我的想法是:既然不让明着用loop, 我就想到了用.filter() 这个method,
: 比如:
: var numbers = [1, 2, 3, 4, 5, 6, 7];
: var oddNumbers = numbers.filter(function(val) {
: return val % 2 != 0;
: });
: console.log(oddNumbers);

avatar
S*y
11
filter is ecma 5 only if I recall correctly, won't work in older browsers.
avatar
h*k
12
搞笑的吧。。。不让用ecma 5的功能。。ecma 6都要出来了。。难道要能在ie6里运行
不成。。

【在 S******y 的大作中提到】
: filter is ecma 5 only if I recall correctly, won't work in older browsers.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。