如何在angualrjs中的另一个arry内的数组上循环

时间:2016-04-30 15:47:45

标签: javascript angularjs

我的记录很少,我想在控制器中使用foreach循环

var values = [[{"code":"sd","description":"d"}],[{"code":"gh","description":"d"}]]

angular.forEach(values, function(value, key){
console.log(key + ': ' + value.code);
});

这是一个对象,作为包含另一个数组内部的对象。有人可以建议我如何使用foreach循环来获取这些数据的代码。

3 个答案:

答案 0 :(得分:2)

你只是在里面做另一个foreach

var codeList = [];

angular.forEach(values, function(value, key){
  angular.forEach(value, function(item, key){
      codelist.push(item.code);
   });
});

答案 1 :(得分:2)

var values = [[{"code":"sd","description":"d"}],[{"code":"gh","description":"d"}]]

for (var i = 0; i< values.length ; i++){
   for (var j = 0; j< values[i].length ; j++){
      console.log(values[i][j])
   }
}
  • 原生for循环比angular.forEach快约90%。

  • angular.forEach循环在条件匹配时也不会中断。

答案 2 :(得分:0)

扩展Array原型,允许您轻松地在函数式编程风格中进行一些非常棒的数组操作。以下代码应该有所帮助。

arr.flatten().select('code').forEach(function (code) { console.log('code: ' + code) })

首先,您需要将这些功能添加到您的代码中。

Array.prototype.select = function (prop) {
   var arr = this;
   var ret = [];
   for (var i = 0; i < arr.length; i++) {
       ret.push(arr[i][prop]);
   }
   return ret;
}
Array.prototype.flatten = function () {
   var arr = this.valueOf();
   var ret = [];
   arr.forEach(function (item) {
       if (Array.isArray(item)) {
           item.forEach(function (itm) {
               ret.push(itm);
           });
       }
       else {
           ret.push(item);
       }
   });
   return ret;
}

如果您喜欢,可以查看https://github.com/mykeels/ArraysJS 那里有很多这样的功能。