Javascript 如何使用AngularJS从JSON获取子集
我有JSON数据,例如:Javascript 如何使用AngularJS从JSON获取子集,javascript,json,angularjs,Javascript,Json,Angularjs,我有JSON数据,例如: [{slug: 'a'}, {slug: 'b'}, {slug: 'c'}, {slug: 'd'}] 现在我想在控制器中编写代码,这样当我将b传递给它时,它应该返回: [{slug: 'b'}, {slug: 'c'}, {slug: 'd'}] 请建议一个好的方法来实现这一点与AngularJS 谢谢你试试这个,它会对你有用的 function invert(obj, start) { var arrObj=[]; var isStart=false;
[{slug: 'a'}, {slug: 'b'}, {slug: 'c'}, {slug: 'd'}]
现在我想在控制器中编写代码,这样当我将b
传递给它时,它应该返回:
[{slug: 'b'}, {slug: 'c'}, {slug: 'd'}]
请建议一个好的方法来实现这一点与AngularJS
谢谢你试试这个,它会对你有用的
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));
功能反转(obj,启动){
var arrObj=[];
var-isStart=false;
对于(var i=0;i,基本上需要这样一个函数:
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;
};
然后,filteredData
将是一个数组,它只包含从slug:'b'
开始的对象。请详细说明如何传递json和用于启动子集的参数。我已经更新了答案,请检查它,现在它将根据您的要求工作,因为代码没有回答问题(“因此,当我通过<代码> B<代码>它时,你甚至不考虑这个问题,而且-另外它不起作用。你的演示返回所有对象,包括SLUG <代码> A<代码>。而且,代码是坏的风格。(ob
,prop
,new_obj
,arrObj
是不一致的名称,缩进是错误的,…最后但并非最不重要的一点,为什么函数名为invert
?它不反转任何内容).看,我只是放了帮助代码,用户可以通过代码中的一些操作来实现目标。顺便说一句,我已经更新了代码。这与不一致的名称的不良样式无关。您的代码仍然是错误的:您颠倒了键和值,这不是要求的。
var data = [
{ slug: 'a' },
{ slug: 'b' },
{ slug: 'c' },
{ slug: 'd' }
];
var filteredData = takeStartingAt(data, 'b');