我在这里想在JavaScript中使用map
函数来循环类型数据数组,但是以下这些语法却出错了:
function porti(scores) {
const test = scores.map(pass, fail) => {
if (scores < 75){
test.fail
} else {
test.pass
}
return {pass, fail}
}
}
如果分数<75:失败,则其他输出:通过
console.log(porti([80, 45, 90, 65, 74, 100, 85, 30]));
// { pass: [ 80, 90, 100, 85 ], fail: [ 45, 65, 74, 30 ] }
console.log(porti([]));
// { pass: [], fail: [] }
答案 0 :(得分:3)
我认为reduce对于这种情况会更好。这将使我们可以将数组简化为两个项目数组的对象。
let items = [80, 45, 90, 65, 74, 100, 85, 30]
let result = items.reduce((obj, item) => {
item < 75 ? obj.fail.push(item) : obj.pass.push(item)
return obj
}, {pass:[], fail:[]})
console.log(result)
如果您想使用过滤器,可以...
let items = [80, 45, 90, 65, 74, 100, 85, 30]
let result = {
pass: items.filter(i => i >= 75),
fail: items.filter(i => i < 75)
}
console.log(result)
这是我们如何使用forEach ...
let items = [80, 45, 90, 65, 74, 100, 85, 30]
let result = {pass:[], fail:[]}
items.forEach(itm => itm < 75 ? result.fail.push(itm) : result.pass.push(itm))
console.log(result)
答案 1 :(得分:2)
您可以将支票集成为三元以获取推送的密钥。
id
$(function(){
$('li').click(function(){$(this).find('input[type=radio]').prop('checked', true);});
});
/* URL Prefill Code */
var form = document.getElementById('form-product-choices');
form.addEventListener('change', function(e){
var actionUrl = 'https://example.com/';
var radioButtons = document.getElementsByName('product-choice');
for( var i = 0; i < radioButtons.length; i++ ) {
if( radioButtons[i].checked ) {
actionUrl += '?product-choice=' + radioButtons[i].value;
break;
}
}
document.getElementById('action-link').href = actionUrl;
});
答案 2 :(得分:0)
您误解了.map的使用方法,它需要3个参数1-currentValue
,2-index
,3-array
。 currentValue是当前迭代中正在处理的元素,index是currentValue在数组中的索引,而array是.map被调用的数组。
您可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
处了解有关.map的更多信息。这是一个如何使用.map进行操作的示例
function porti(scores) {
var pass = [], fail = [];
const test = scores.map(n => {
if (n < 75) {
fail.push(n);
} else {
pass.push(n);
}
});
return {pass, fail};
}
console.log(porti([80, 45, 90, 65, 74, 100, 85, 30]));
答案 3 :(得分:0)
如上所述,当您希望通过操作前一个数组返回数组时,最好保存.map()。如果您不希望使用香草循环。你可以试试这个
const testScores = [...someArray of numbers]
function porti(tesScores) {
const result = {
pass: [],
fail: []
}
for (let score of testScores) {
if (score < 75) {
result.fail.push(score)
} else {
result.pass.push(score)
}
return result
}}