标签:style blog http io color os ar 使用 java
代码信息来自于http://ejohn.org/apps/learn/。
function merge(root){ for(i = 0 ; i < arguments.length; i++) for(var key in arguments[i]) return root[key] = arguments[i][key] } var merged = merge({name: "John"}, {city: "Boston"}); console.log( merged.name == "John", "name属性和原来一样." ); console.log( merged.city == "Boston", "city属性被复制到了第一个参数对象里" );
采用这个方法可以设置数量位置不固定的参数,它的思路就是用访问二维数组的方法访问所有对象,将所有的内容复制到第一个对象。
这里要注意,传进来的所有参数存在于arguments对象中,而函数的形参,依次对应传进来的参数。像本题,arguments包括{name: "John"},{city: "Boston"};而root是{name: "John"}。
function smallest(array){ return Math.min.apply( Math, array ); } function largest(array){ return Math.max.apply( Math, array ); } console.log(smallest([0, 1, 2, 3]) == 0, "找到最小值的位置"); console.log(largest([0, 1, 2, 3]) == 3, "找到最大值的位置");
function smallest(){ return Math.min.apply( Math, arguments ); } function largest(){ return Math.max.apply( Math, arguments ); } console.log(smallest(0, 1, 2, 3) == 0, "找到最小值的位置"); console.log(largest(0, 1, 2, 3) == 3, "找到最大值的位置");
function highest(){ return arguments.sort(function(a,b){ return b - a; }); } console.log(highest(1, 1, 2, 3)[0] == 3, "获取最高值"); console.log(highest(3, 1, 2, 3, 4, 5)[1] == 4, "查看数组第二个元素");
sort是数组对象的方法。
// 提示: 数组拥有返回新数组的.slice和.splice方法. function highest(){ return makeArray(arguments).sort(function(a,b){ return b - a; }); } function makeArray(array){ // 补足代码 } // 期望: [3,2,1,1] console.log(highest(1, 1, 2, 3)[0] == 3, "获取最大值"); // 期望: [5,4,3,3,2,1] console.log(highest(3, 1, 2, 3, 4, 5)[1] == 4, "验证结果");
function highest(){ return makeArray(arguments).sort(function(a,b){ return b - a; }); } function makeArray(array){ return Array().slice.call(array); } console.log(highest(1, 1, 2, 3)[0] == 3, "获取最大值"); console.log(highest(3, 1, 2, 3, 4, 5)[1] == 4, "验证结果");
这里是类数组和数组的转化方法,通过call,修改上下文,调用slice实现。
function multiMax(multi){ // 获取一个没有第一个参数的数组 var allButFirst = ___; // 在剩余的参数数组中找到最大的数字 var largestAllButFirst = ___; return multi * largestAllButFirst; } console.log( multiMax(3, 1, 2, 3) == 9, "3*3=9 (第一个参数, 剩余参数的最大值)" );
function multiMax(multi){ // 获取一个没有第一个参数的数组 var allButFirst = Array().slice.call(arguments,1); // 在剩余的参数数组中找到最大的数字 var largestAllButFirst = Math.max.apply(Math,allButFirst); return multi * largestAllButFirst; } console.log( multiMax(3, 1, 2, 3) == 9, "3*3=9 (第一个参数, 剩余参数的最大值)" );
标签:style blog http io color os ar 使用 java
原文地址:http://www.cnblogs.com/winderby/p/4064928.html