/    Sign up×
Community /Pin to ProfileBookmark

[RESOLVED] Converting 2-d array into array of objects.

I have the following in a withholding tax calculation page:

[CODE]var EXEMPT = 3800; // May change in later years, see Publication 15, Circular E, Employer’s Tax Guide from the IRS
var STable = [ // Define Single Table
[ 0, 0, 0], // Range, base, percentage
[ 2150, 0, .10],
[ 10850, 870.00, .15], // With >= 10850 & < 37500, tax is $870.00 + 15% of the amount over $10850
[ 37500, 4867.50, .25],
[ 87800, 17442.50, .28],
[180800, 43482.50, .33],
[390500, 112683.50, .35] // Note: no comma at end
];
………………………………..
for (var exmp=0; exmp < 8; exmp++) {
var WkAmt = AnnAmt – EXEMPT * exmp;
for (i=0; (i < (STable.length – 1)) && (WkAmt > STable[i+1][0]) ; i++) ; //Search Singles table for proper bracket.
var AnnTax = STable[i][1] + (WkAmt – STable[i][0]) * STable[i][2];
document.tax2012.elements[TableSub++].value = Nformat(AnnTax / NoPeriods);
}[/CODE]

The 2nd subscript indicates what field is used and is always constant. How can I change this into a one dimension table of objects with three fields/properties? TIA

BTW, this is the website: [URL=”http://home.comcast.net/~wporter211/realsite/tax12.html”]tax12.html[/URL].

to post a comment
JavaScript

4 Comments(s)

Copy linkTweet thisAlerts:
@007JulienFeb 17.2012 — This could be respond to your question
[CODE]<script type="text/javascript">
var STable = [ // Define Single Table
[ 0, 0, 0], // Range, base, rate
[ 2150, 0, .10],
[ 10850, 870.00, .15], // With >= 10850 & < 37500, tax is $870.00 + 15&#37; of the amount over $10850
[ 37500, 4867.50, .25],
[ 87800, 17442.50, .28],
[180800, 43482.50, .33],
[390500, 112683.50, .35] // Note: no comma at end
];
[COLOR="Blue"]// To allows alert (which call a toString() function) with object like with tables[/COLOR]
Object.prototype.toString=function(){var i,c='n';for (i in this) c+='nkey '+i+' => value '+this[i];return c}

[COLOR="Blue"]// A constructor[/COLOR]
function Obj(range,base,rate){this.range=range;this.base=base;this.rate=rate;}

[COLOR="Blue"]// A loop to build an unidimensional Array of objects[/COLOR]
var STableObj=[];
for (var i=0;i<STable.length;i++) STableObj[STableObj.length]=new Obj(STable[i][0],STable[i][1],STable[i][2]);
[COLOR="Blue"]
// The result[/COLOR]
alert(STableObj)

[COLOR="Blue"]// this table seems to use like this[/COLOR]
var amount=40000,availableBracket=STableObj.length-1;
while (availableBracket && amount<STableObj[availableBracket].range) availableBracket--;
alert(availableBracket)
tax = STableObj[availableBracket].base+(amount-STableObj[availableBracket].range)*STableObj[availableBracket].rate
alert(tax)

</script>[/CODE]
Copy linkTweet thisAlerts:
@nap0leonFeb 17.2012 — For creating a custom object with that data, this works.

Or are you looking for code that does the conversion? (e.g., you are forced to receive the information as a 2D array but prefer to work with an single array of objects instead?

<i>
</i>&lt;script&gt;
function taxTable(range,base,percentage){
this.range = range;
this.base = base;
this.percentage = percentage;
}

arrSTable = new Array();
arrSTable[0] = new taxTable("0","0","0");
arrSTable[1] = new taxTable("2150","0",".10");
arrSTable[2] = new taxTable("10850","870.00",".15");
arrSTable[3] = new taxTable("37500","4867.50",".25");
arrSTable[4] = new taxTable("87800","17442.50",".28");
arrSTable[5] = new taxTable("180800","43482.50",".33");
arrSTable[6] = new taxTable("390500","112683.50",".35");

for (i=0; i&lt;arrSTable.length;i++){
document.write ("&lt;p&gt;Range: " + arrSTable[i].range + ", Base: " + arrSTable[i].base + ", Percentage: " + arrSTable[i].percentage + "&lt;/p&gt;");
}
&lt;/script&gt;
Copy linkTweet thisAlerts:
@wbportauthorFeb 17.2012 — I've never worked with objects except in a "class" and this is a first chance to plunge in. The tables don't change for a year so I can use any method that works to load them. A 2-d table makes sense when each element contains the same type of data.

Plenty of food for thought--thanks people for looking into it.
Copy linkTweet thisAlerts:
@wbportauthorFeb 29.2012 — Done. Link is on the first message.
×

Success!

Help @wbport spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.17,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...