地图功能中的if / else语句?

时间:2018-09-24 16:21:54

标签: javascript arrays function object for-loop

我在这里想在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: [] }

4 个答案:

答案 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      
}}