如何使用AngularJS从JSON获取子集

时间:2013-12-13 10:40:34

标签: javascript json angularjs

我有JSON数据,例如:

[{slug: 'a'}, {slug: 'b'}, {slug: 'c'}, {slug: 'd'}]

现在我想在我的控制器中编写代码,这样当我将b传递给它时,它应该返回:

[{slug: 'b'}, {slug: 'c'}, {slug: 'd'}]

请使用AngularJS建议一个很好的方法。

由于

2 个答案:

答案 0 :(得分:2)

基本上你需要这样的功能:

var takeStartingAt = function (data, start) {
  var result = [],
      skip = true;

  for (var i = 0; i < data.length; i++) {
    if (data[i].slug === start) { skip = false; }
    if (skip) { continue; }

    result.push(data[i]);
  }

  return result;
};

就是这样。现在您可以按如下方式使用此功能:

var data = [
  { slug: 'a' },
  { slug: 'b' },
  { slug: 'c' },
  { slug: 'd' }
];
var filteredData = takeStartingAt(data, 'b');

然后filteredData将是一个仅包含从slug: 'b'开始的对象的数组。

答案 1 :(得分:0)

试试这个,它会对你有用

function invert(obj, start) {
  var arrObj=[];
  var isStart=false;
  for(var i=0;i<obj.length;i++){ 
  var ob=obj[i];
  for (var prop in ob) {
    if(ob.hasOwnProperty(prop)) {

        if(ob[prop]==start){
             isStart=true;
        }   
        if(isStart){
         arrObj.push(ob);
        }

    }
  }    
 }

  return arrObj;
};

var ob1= invert ([{slug: 'a'}, {slug: 'b'}, {slug: 'c'}, {slug: 'd'}],'c');
alert(JSON.stringify(ob1));

<强> Working DEMO