在 JavaScript 1.6 里,javascript 數(shù)組增加了幾個(gè)非常有用的方法:indexOf、lastIndexOf、every、 filter、 forEach、 map、 some,其中前兩個(gè)可以歸為元素定位方法,而后面的幾個(gè)則可以歸為迭代(iterative)方法。
map和foreach類似,都是遍歷輸出結(jié)果,只是方式不太一樣,map直接對整個(gè)列表數(shù)據(jù)進(jìn)行函數(shù)操作;而foreach是迭代對每行數(shù)據(jù)進(jìn)行逐一操作,foreach靈活性更好吧,map效率更好點(diǎn)兒。可以混著用
reduce是一個(gè)二元操作,就是對給定列表中的數(shù)據(jù)兩個(gè)兩個(gè)的進(jìn)行每次的操作,調(diào)用的函數(shù)類似這樣hex(x,y)
var desColors = [],
srcColors = [
{r: 255, g: 255, b: 255 }, // White
{r: 128, g: 128, b: 128 }, // Gray
{r: 0, g: 0, b: 0 } // Black
];
for (var i = 0, ilen = srcColors.length; i < ilen; i++) {
var color = srcColors[i],
format = function(color) {
return Math.round(color / 2);
};
desColors.push( {
r: format(color.r),
g: format(color.g),
b: format(color.b)
});
}
// Outputs:
// [
// {r: 128, g: 128, b: 128 },
// {r: 64, g: 64, b: 64 },
// {r: 0, g: 0, b: 0 }
// ];
console.log(desColors);
有了map的JavaScript
var srcColors = [
{r: 255, g: 255, b: 255 }, // White
{r: 128, g: 128, b: 128 }, // Gray
{r: 0, g: 0, b: 0 } // Black
],
desColors = srcColors.map(function(val) {
var format = function(color) {
return Math.round(color/2);
};
return {
r: format(val.r),
g: format(val.g),
b: format(val.b)
}
});
// Outputs:
// [
// {r: 128, g: 128, b: 128 },
// {r: 64, g: 64, b: 64 },
// {r: 0, g: 0, b: 0 }
// ];
console.log(desColors);
Math.round()可以接收對象作為參數(shù),對對象內(nèi)所有屬性同時(shí)進(jìn)行操作.