table expand fast, table expand fast ignore case
This function works similarly to table expand(), with the only exception that the additional roes resulting from multiple lookups
are appended at the bottom of the table rather than inserting them below the original row. For very large target tables, this approach
saves significant becuase no rows will be shifted repeatedly. Consider sorting the table, e.g. using table sort rows() afterwards, if needed.
Attention: Do not confuse with the functions table lookup fast() and table integrate fast() where the 'fast' in the
function name refers to an optimized searching scheme suitable for pre-sorted tables.
Indirect parameter passing is disabled
6 - 9 (For parameter description and return values: see table integrate() )
table initialize( nute facts, // Nutritional facts, source: ndb.nal.usda.gov
{ { Food, Ingredient, Portion },
{ potato chips, fat, 0.34 },
{ potato chips, carbohydrates, 0.50 },
{ potato chips, sodium, 0.08 },
{ potato chips, proteins, 0.07 },
{ potato chips, others, '' }, // Remaining weight subtracted from above (--> operation identifer 'mul')
{ broccoli, water, 0.90 },
{ broccoli, proteins, 0.03 },
{ broccoli, carbohydrates, 0.06 },
{ broccoli, others, '' }, // Remaining weight subtracted from above (--> operation identifer 'mul')
{ spring water, water, 1.00 } } );
table initialize( target, { { Name, Favorite Food, Weight },
{ Rafael, Broccoli, 200 }, { Steve, Parmesan cheese, 100 }, { Stephanie, Parmesan cheese, 200 },
{ Jane, Potato chips,100 }, { Nick, Potato chips, 50 }, { Fred, Spring water, 1000 } } );
echo("Target table before looking up with expanding contents:");
table list ( target );
count[] = table expand fast ignore case( target, Favorite Food, { Ingredient, Weight }, nute facts, Food,
{ Ingredient, Portion }, { overwrite, mul}, true, Counter );
echo("Lookup table:");
table list ( nute facts );
// Note that food portions are multiplied with the weight of the food.
echo("After expanding (listing ingredients and calculating their weights):");
echo("Note: Nothing found for parmesan cheese.");
echo("Target table after lookup (", count[], " items found):");
table list ( target );
Target table before looking up with expanding contents:
0 : Name | Favorite Food | Weight
1 : Rafael | Broccoli | 200
2 : Steve | Parmesan cheese | 100
3 : Stephanie | Parmesan cheese | 200
4 : Jane | Potato chips | 100
5 : Nick | Potato chips | 50
6 : Fred | Spring water | 1000
Lookup table:
0 : Food | Ingredient | Portion | Counter
1 : potato chips | fat | 0.34 | 2
2 : potato chips | carbohydrates | 0.50 | 2
3 : potato chips | sodium | 0.08 | 2
4 : potato chips | proteins | 0.07 | 2
5 : potato chips | others | | 2
6 : broccoli | water | 0.90 | 1
7 : broccoli | proteins | 0.03 | 1
8 : broccoli | carbohydrates | 0.06 | 1
9 : broccoli | others | | 1
10 : spring water | water | 1.00 | 1
After expanding (listing ingredients and calculating their weights):
Note: Nothing found for parmesan cheese.
Target table after lookup (15 items found):
0 : Name | Favorite Food | Weight | Ingredient
1 : Rafael | Broccoli | 180 | water
2 : Steve | Parmesan cheese | 100 |
3 : Stephanie | Parmesan cheese | 200 |
4 : Jane | Potato chips | 34 | fat
5 : Nick | Potato chips | 17 | fat
6 : Fred | Spring water | 1000 | water
7 : Rafael | Broccoli | 6 | proteins
8 : Rafael | Broccoli | 12 | carbohydrates
9 : Rafael | Broccoli | 2 | others
10 : Jane | Potato chips | 50 | carbohydrates
11 : Jane | Potato chips | 8 | sodium
12 : Jane | Potato chips | 7 | proteins
13 : Jane | Potato chips | 1 | others
14 : Nick | Potato chips | 25 | carbohydrates
15 : Nick | Potato chips | 4 | sodium
16 : Nick | Potato chips | 3.5 | proteins
17 : Nick | Potato chips | 0.5 | others
table expand
table expand fast smart
table expand fast with rules
table expand fast with rules once