我有一个名为 uncompletedSteps()
的函数:
function uncompletedSteps(completedSteps) {
// completedSteps is an array
}
此函数应检查 completedSteps
并返回不等于 true
的所有 completedSteps
元素的索引:
if (completedSteps[i] === true) {
// add to return list
}
换句话说,如果有:
var completedSteps = [
true,
null,
true
];
然后 uncompletedSteps()
应该返回 [0, 2]
。
这个 uncompletedSteps()
应该是什么样子的? (ECMAScript5 没问题。)
最佳答案
使用reduce
:
function uncompletedSteps(steps){
return steps.reduce(function(memo, entry, i) {
return memo.concat(entry ? i : []);
}, [])
}
使用forEach
:
function uncompletedSteps(steps){
var uncompleted = [];
steps.forEach(function(entry,i) {
if(entry) uncompleted.push(i);
})
return uncompleted;
}
使用map
和filter
function uncompletedSteps(steps){
return steps.map(function(entry, i) {
return entry ? i : null;
}).filter(function(entry) {
return entry != null;
});
}
关于javascript - 我应该如何实现一个函数来查找数组的非真实元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5331982/