如何通过JS解析对象数组

时间:2017-01-20 07:13:52

标签: javascript

如何使用JavaScript解析以下对象数组以获取值 D1 S1 等?

{
 "D1": {
  "C1": {
   "S2": [
    ["P1", "P4"] 
   ],
   "S1": [
    ["P2"]
   ]
  },
  "C2": {
   "S2": [
    ["P3", "P7"]
   ]
  },
  "C3": {
   "S4": [
    ["P6"]
   ]
  }
 },
 "D3": {
  "C3": {
   "S3": [
    ["P5"]
   ]
  }
 }
}

所需输出

我需要取出钥匙并按以下方式安排。

D1

C1

S2

p1 p4

s1

p2

2 个答案:

答案 0 :(得分:0)

尝试以下代码,我在控制台日志中打印,你可以推送到字符串数组或任何东西:

var data=
{
 "D1": {
  "C1": {
   "S2": [
    ["P1", "P4"] 
   ],
   "S1": [
    ["P2"]
   ]
  },
  "C2": {
   "S2": [
    ["P3", "P7"]
   ]
  },
  "C3": {
   "S4": [
    ["P6"]
   ]
  }
 },
 "D3": {
  "C3": {
   "S3": [
    ["P5"]
   ]
  }
 }
}

getkeys(data);
function getkeys(data){
  for (var key in data){
    console.log(key);
    if(Array.isArray(data[key])){
        for(var i=0;i<data[key][0].length;i++){
          console.log(data[key][0][i]);
      }
    }
    else{
        getkeys(data[key])
    }
  }
}

答案 1 :(得分:0)

非常容易,使用.replace().match()字符串原型。

我们假设此示例中的objectArray是JSON表示法中的对象。

objectArray = JSON.parse(objectArray);
objectArray = objectArray.replace(/[^a-zA-Z1-9 ]/g, "");
objectArray = objectArray.match(/.{1,2}/g);

返回

["D1", "C1", "S2", "P1", "P4", "S1", "P2", "C2", "S2", "P3", "P7", "C3", "S4", "P6", "D3", "C3", "S3", "P5"]

我们现在有一个字符串数组。只要您继续使用两个字符,这将匹配,否则它将失败,您将需要一个更优雅的解决方案。