Javascript 搜索JSON格式的数组

Javascript 搜索JSON格式的数组,javascript,php,json,Javascript,Php,Json,我正在尝试搜索以下JSON格式的数组 [{"SystemID":"62750003","ApparentPower":"822"}, {"SystemID":"62750003","ApparentPower":"822"}, {"SystemID":"62750003","ApparentPower":"807"}, {"SystemID":"62750003","ApparentPower":"796"}] 我想首先检查本例中的第一个元素“SystemID”,并将“SystemID”

我正在尝试搜索以下JSON格式的数组

[{"SystemID":"62750003","ApparentPower":"822"}, 
{"SystemID":"62750003","ApparentPower":"822"}, 
{"SystemID":"62750003","ApparentPower":"807"}, 
{"SystemID":"62750003","ApparentPower":"796"}]
我想首先检查本例中的第一个元素“SystemID”,并将“SystemID”的所有值附加到我创建的op1数组中。我不知道怎么做,我搜索数组的代码如下(JS文件):

当我现在运行这段代码时,op1是空的

我希望op1拥有JSON数组中的所有SystemID值


更新:我想检查元素是否为“SystemID”,如果是,则将第一个元素添加为“op1”。JSON数据中的第一个元素和第二个元素可能会改变,所以我想先检查一下,然后将第一个元素附加到“op1”中。我还要检查第二个元素,并将第二个元素值附加到“op2”数组。

据我所知,您需要数组中的所有
SystemID

const data=[{“SystemID”:“62750003”,“ApparentPower”:“822”},{“SystemID”:“62750003”,“ApparentPower”:“822”},{“SystemID”:“62750003”,“ApparentPower”:“807”},{“SystemID”:“62750003”,“ApparentPower”:“796”};
const op1=data.map(item=>item.SystemID);

console.log(op1)您需要这样的东西,您缺少
for
循环

var data=[{“SystemID”:“62750003”,“ApparentPower”:“822”},
{“SystemID”:“62750003”,“ApparentPower”:“822”},
{“SystemID”:“62750003”,“ApparentPower”:“807”},
{“SystemID”:“62750003”,“ApparentPower”:“796”}]
var op1=[];
var op2=[];
for(设i=0;iconsole.log(op2)
据我所知,您的代码如下

var json=[{“SystemID”:“62750003”,“ApparentPower”:“822”},
{“SystemID”:“62750003”,“ApparentPower”:“822”},
{“SystemID”:“62750003”,“ApparentPower”:“807”},
{“SystemID”:“62750003”,“ApparentPower”:“796”}];
var myArray=[];
forEach(函数(项){
if(item.SystemID){
myArray.push(item.SystemID);
}
});

log(myArray)是否要检查第一个键是否为SystemID?如果是这样的话,你可以试试

const数据=[
{“SystemID”:“62750003”,“ApparentPower”:“822”},
{“SystemID”:“62750003”,“ApparentPower”:“822”},
{“SystemID”:“62750003”,“ApparentPower”:“807”},
{“SystemID”:“62750003”,“ApparentPower”:“796”},
{“NOTASystemID”:“6sss”,“ApparentPower”:“796”}
];
常数op=数据
.filter(element=>Object.keys(element)[0]==“SystemID”)//筛选出具有第一个键sysID的元素
.map(元素=>element.SystemID);

控制台日志(op)
假设您已经解析了JSON数据,您可以通过数组映射并使用该方法检查数组中的每个对象是否具有
SystemID
,如果有,则将其值推送到
op1
数组

尝试使用索引检索对象中的元素是不可靠的,因为对象属性未排序

var data=[{“SystemID”:“62750003”,“ApparentPower”:“822”},{“SystemID”:“62750003”,“ApparentPower”:“822”},{“SystemID”:“62750003”,“ApparentPower”:“807”},{“SystemID”:“62750003”,“ApparentPower”:“796”};
var op1=data.map(e=>{
如果(如hasOwnProperty(“系统ID”)){
返回e.SystemID;
}否则{
//由于当前映射对象没有“SystemID”,请执行其他操作
}
});

console.log(op1)试试这个,

var data = '[{"SystemID":"62750003","ApparentPower":"822"},{"SystemID":"62750003","ApparentPower":"822"},{"SystemID":"62750003","ApparentPower":"807"},{"SystemID":"62750003","ApparentPower":"796"}]';

 var op1 = [];
 $.each(JSON.parse(data),function(i,item){
   op1[i] = item.SystemID;
 });
 console.log(op1);

什么是数据[i]??我指的是什么?我已经试过了,它起作用了。因此,如果第一个元素是例如“Datarecorded”,我是否会添加另一个if语句,并与该元素进行比较,然后在op1中推送该元素的数据?Thanks@Danny是的,如果你想让它们在不同的数组中,我需要像上面那样创建另一个for循环,并为另一个数组创建一个类似的条件来存储第二个元素,是吗?好的,我有点困惑。假设视在功率(AP)是第一个元素,SystemID(SID)是第二个元素,AP还会附加到op1吗?我需要第一个元素总是附加到op1,第二个元素总是附加到op2(对不起,如果我不清楚的话),这是基于你的检查,你到底想做什么@Danny?
var data = '[{"SystemID":"62750003","ApparentPower":"822"},{"SystemID":"62750003","ApparentPower":"822"},{"SystemID":"62750003","ApparentPower":"807"},{"SystemID":"62750003","ApparentPower":"796"}]';

 var op1 = [];
 $.each(JSON.parse(data),function(i,item){
   op1[i] = item.SystemID;
 });
 console.log(op1);