Hello,

If I have an array structured like the following:

'0' ...
    '0' ...
    '1' ...
    '2' ...
'1' ...
    '0' => "Mike"
    '1' => "1892"
    '2' => "1"
'2' ...
    '0' => "Paul"
    '1' => "1672"
    '2' => "1"
'3' ...
    '0' => "Sam"
    '1' => "1872"
    '2' => "1"
'4' ...
    '0' => "David"
    '1' => "2090"
    '2' => "1"
'5' ...
    '0' => "Daniel"
    '1' => "1652"
    '2' => "1"
'6' ...
    '0' => "Frank"
    '1' => "2192"
    '2' => "0"
'7' ...
    '0' => "Louis"
    '1' => "1892"
    '2' => "1"

   '8' ...
        '0' => "Michael"
        '1' => "1910"
        '2' => "0"

Note: During actual usage, the actual array may be of any size and contain more or less objects than the example provide.

I would like to organize the array in two groups of arrays.
Group one will contain objects where the value of the 3rd key is equal to 0
Group two will contain objects where the value of the 3rd key is equal to 1

Essentially, it needs to look like this:
Group one

  '0' ...
    '0' => "Michael"
    '1' => "1910"
    '2' => "0"
  '1' ...
    '0' => "Frank"
    '1' => "2192"
    '2' => "0"

Group two:

   '0' ...
        '0' => "Louis"
        '1' => "1892"
        '2' => "1"
   '1' ...
        '0' => "Mike"
        '1' => "1892"
        '2' => "1"
    '2' ...
        '0' => "Paul"
        '1' => "1672"
        '2' => "1"
    '3' ...
        '0' => "Sam"
        '1' => "1872"
        '2' => "1"
    '4' ...
        '0' => "David"
        '1' => "2090"
        '2' => "1"

Now from group one, I would like to extract the object where the value of its key 1 is the greater of the group. for Group one, I will need to extract:

  '1' ...
    '0' => "Frank"
    '1' => "2192"
    '2' => "0"

For group two, I would like to extract the object where the value of its key 1 is also the greater of that group. For Group two, I will need to extract:

  '4' ...
    '0' => "David"
    '1' => "2090"
    '2' => "1"

I hope this makes some sense.

I appreciate any thoughts on this!

Thanks,
Mossa

Recommended Answers

All 5 Replies

Member Avatar for diafol

You've posted this in JS, but the array structure looks more like PHP. Care to expand on this?

function getGroups(yourRawArray) {
    var group1 = [];
    var group2 = [];

    for(var i = 0; i < yourRawArray.length; i++) {
        var obj = yourRawArray[i];
        if(obj['2'] == '0') group1.push(obj);
        if(obj['2'] == '1') group2.push(obj);
    }

    return {'group1': group1, 'group2': group2};
}

function getGreatest(groupArray) {
    // To get Greatest you just need to sort the 2 group arrays and pick the first item
    return (groupArray.sort(function(a, b) { return a['2'] > b.['2']; } ))[0];
}


// Get 2 groups
var groups = getGroups(yourRawArray);

// Get Greatest
var greatestOfGroup1 = getGreatest(groups.group1);
var greatestOfGroup2 = getGreatest(groups.group2);

I appreciate the response!

I am getting an error that I cannot seem to identify it cause. here is the script implementation:

        var dataparsed ='["Bob","3100",0],["Paul","2293",1],["eric","2099",0],["Carl","1400",1]';


        var data = JSON.parse("[" + dataparsed + "]" );
        function getGroups(data) {
        var group1 = [];
        var group2 = [];
        for(var i = 0; i < data.length; i++) {
        var obj = data[i];
        if(obj['2'] == '0') group1.push(obj);
        if(obj['2'] == '1') group2.push(obj);
        }
        return {'group1': group1, 'group2': group2};
        }
        function getGreatest(groupArray) {
        // To get Greatest you just need to sort the 2 group arrays and pick the first item
        return (groupArray.sort(function(a, b) { return a['2'] > b.['2']; } ))[0];
        }
        // Get 2 groups
        var groups = getGroups(data);
        // Get Greatest
        var greatestOfGroup1 = getGreatest(groups.group1);
        var greatestOfGroup2 = getGreatest(groups.group2);

        alert(greatestOfGroup1);

the error is pointing to the following line

return (groupArray.sort(function(a, b) { return a['2'] > b.['2']; } ))[0];

error type:

    Uncaught SyntaxError: Unexpected token [

any ideas?

Note to diafol,
the array is generated in JS with:

var dataparsed ='["Bob","3100",0],["Paul","2293",1],["eric","2099",0],["Carl","1400",1]';

var data = JSON.parse("[" + dataparsed + "]" );

to printed it to screen i have a js function that mimic php Print_r(), but in JS.

Hi Diafol,

This post is as a result of me running into some additional issue after addressing the othe post you mention.

For the question addressed here; essentially, I would like to Group an Array by common values and then extract specific elements from the array based on certain conditions.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.