月度归档:2016年08月

Javascript多维数组扁平化的几种方法

//扁平化 指的是 将多维数组转化成一维数组
//这是一个多维数组
var myArray = [
     [1, 2],
     [3, 4, 5],
     [6, 7, 8, 9]
];

//扁平化后的效果
[1, 2, 3, 4, 5, 6, 7, 8, 9]

//第一种实现: 使用concat()和apply()
var myNewArray = [].concat.apply([], myArray);

//第二种实现:使用reduce()
var myNewArray2 = myArray.reduce(function(prev, curr) {
  return prev.concat(curr);
});

//第三种实现:for循环嵌套
var myNewArray3 = [];
for (var i = 0; i < myArray.length; ++i) {
  for (var j = 0; j < myArray[i].length; ++j)
    myNewArray3.push(myArray[i][j]);
}
console.log(myNewArray3);

//第四种实现:ES6 的展开运算符 ...
var myNewArray4 = [].concat(...myArray);
console.log(myNewArray4);

以上内容摘自:Javascript多维数组扁平化

如何在外部调用ajax返回的值

问题描述:

  $.get("url",function(data){
    // 如何把data返回到外部使用呢?
   });

第一种方法:全局变量赋值

var reData = null;
  $.get("url",function(data){
    reData = data;
   });
console.log(reData);// null
//此时你会发现并没什么卵用
//因为ajax是异步执行的 所以全局变量要延迟调用才能取到值 如下:
setTimeout(function(){
   console.log(reData);// object{...}
},200)

上面的方法虽然可以拿到值,但是太low了

第二种方法(推荐)

//定义一个函数把请求代码包裹起来
function getData(callback){
  $.get("url",function(data){

    //以传参的形式把ajax返回的值传给回调函数
    callback(data);
   });
})

//使用
getData(function(data){
  console.log(data);// object{...}
})