तो मैं इसके साथ कुछ घंटों से लड़ रहा हूं- लक्ष्य 4 के प्रत्येक सरणी में उच्चतम संख्याओं की एक नई सरणी बनाना है। हालांकि, मैं इसे एक से अधिक बार लूप में नहीं ले सकता। मैं इसे लूप के लिए कैसे खराब कर रहा हूं?

function largestOfFour(arr) {
    for (var i = 0; i < arr.length; i++) {
        var allTop = "";  
        var top = arr[i].sort(function(a, b) {
            return b - a;   
        });
        i++;
        allTop.push(top[0]);
    }
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
1
chauxvive 28 मार्च 2018, 23:23

3 जवाब

सबसे बढ़िया उत्तर

चर allTop को लूप से पहले एक सरणी के रूप में परिभाषित किया जाना चाहिए, और लूप समाप्त होने के बाद वापस आना चाहिए:

function largestOfFour(arr) {
  var allTop = [];
  
  for (var i = 0; i < arr.length; i++) {
    var top = arr[i].sort(function(a, b) {
      return b - a;
    });
    allTop.push(top[0]);
  }
  
  return allTop;
}

console.log(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]));
3
Ori Drori 28 मार्च 2018, 20:26

अन्य समाधान यह होगा कि फंक्शन Math.max के साथ-साथ फंक्शन reduce का उपयोग किया जाए।

function largestOfFour(arr) {
  return arr.reduce((a, x) => {
    a.push(Math.max.apply(null,x));
    return a;
  }, []);
}

console.log(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]));
1
yajiv 28 मार्च 2018, 20:58

फ़ंक्शन Math.max के साथ-साथ फ़ंक्शन map का उपयोग करना एक बेहतर तरीका है

function largestOfFour(arr) {
  return arr.map(function(a) {
    return Math.max.apply(null, a);
  });
}

var result = largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
console.log(result);

पूर्ण ES6:

var largestOfFour = (arr) => arr.map(a => Math.max(...a));
var result = largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
console.log(result);
3
Ele 28 मार्च 2018, 20:30