配列
配列にして for
もしくは forEach
で繰り返し処理させてみてはどうでしょうか。
データをCSVで持っておき、配列に変換するジェネレータを作っておくと管理が楽になりそうです。
JavaScript
1'use strict';
2function calc (name, place, period) {
3 var products = [
4 {name: 'すいか', place:'山梨', period: 5, cost: 7000},
5 {name: 'すいか', place:'山梨', period: 6, cost: 6000},
6 {name: 'すいか', place:'山梨', period: 7, cost: 5000},
7 {name: 'すいか', place:'山梨', period: 8, cost: 4000},
8 {name: 'すいか', place:'山梨', period: 9, cost: 3000}
9 ];
10
11 // for 文か forEach で producs を繰り返し処理して3つの値が一致する商品を見つける
12}
CSVパーサ
管理面を考えるなら表データをcsvファイル化し、csvから配列に変換するCSVパーサを使うと良いと思います。
大分前に rfc4180.js
を作りましたが、今見ると修正したい部分が多数あったので csv.js に作り直しました。
var csvString = '"すいか","山梨","5","7000"\r\n"すいか","山梨","6","6000"\r\n"すいか","山梨","7","5000"\r\n"すいか","山梨","8","4000"\r\n"すいか","山梨","9","3000"',
array = CSV.parse(csvString);
console.log(Object.prototype.toString.call(CSV)); // [object CSV]
console.log(CSV.stringify(array) === csvString); // true
console.log(JSON.stringify(array)); // [["すいか","山梨","5","7000"],["すいか","山梨","6","6000"],["すいか","山梨","7","5000"],["すいか","山梨","8","4000"]]
JSON.stringify(CSV.parse(csvString))
で配列初期化子を作り、静的HTML/JSに貼り付ける運用を想定しています。
csvファイルをGETして自動的に展開する方法もありますが、HTTPリクエストはタイムラグがあるので注意してください。
その方法を採用するなら csv.js と XMLHttpRequest
を併用するか、RFC4180#fileToArray
を利用するか。
更新履歴
- 2016/05/10 18:40 CSVパーサの説明を追加
Re: sarah358 さん