配列と連想配列
by yshrkn
JavaScript
var fruits = [{
name: "apple",
price: 100,
stocks: 50
}, {
name: "orange",
price: 140,
stocks: 100
}, {
name: "straberry",
price: 500,
stocks: 30
}];
var vegetables = {
potate: {
price: 200,
stocks: 40
},
onion: {
price: 160,
stocks: 80
},
carrot: {
price: 90,
stocks: 50
}
};
function getFruit(name) {
fruits.forEach(function(obj) {
for (var key in obj) {
if (obj.name === name) {
console.log(obj[key]);
}
}
});
return;
}
function getVegetable(name) {
for (var key in vegetables) {
if (key === name) {
for (var prop in vegetables[key]) {
console.log(key + "の" + prop + ":" + vegetables[key][prop]);
}
}
}
return;
}
function getVarietyOfFruits() {
return fruits.length;
}
function getVarietyOfVegetables() {
return (function() {
var variety = 0;
for (var key in vegetables) {
variety++;
}
return variety;
}());
}
var orange = getFruit('orange');
var carrot = getVegetable('carrot');
var varietyOfFruits = getVarietyOfFruits();
var varietyOfVegetables = getVarietyOfVegetables();
console.log("varietyOfFruits:", varietyOfFruits);
console.log("varietyOfVegetables:", varietyOfVegetables);
// Q:配列と連想配列の違い(便利な点・不便な点)は何だと思いますか?
/*
自分としては、構造的なデータ保持のためには、キー値に任意の名前が付けられる連想配列、
そうでないなら通常の配列を使えばいいかなとの認識です。
※各マス目が0か1かみたいなデータは、通常の配列(2次元配列等)で管理すると思いますが。
*/
/**
* ★配列
* ▼配列内容へのアクセス
* 配列の後ろにブラケット記法を用いてインデックスを記述 myArray[0],myArray[1]...
*
* ★連想配列
* ▼配列内容へのアクセス
* 配列の後ろに.(ドット)をつけて、キーとなる値を続ける、もしくはブラケット記法を用いる。
*
* - 一般的な連想配列
* myArray["key"]
*
* - 配列の中の値がオブジェクトの場合
* myArray.obj or myArray["obj"]
*
* ※オブジェクトの中のプロパティへは、
* myArray.obj.prop or myArray.obj[prop] or myArray["obj"]["prop"]["something"]
*
*/