在javascript中抓取JSON对象的对象名称并将其存储在字符串数组中

时间:2018-03-10 15:38:46

标签: javascript json string

所以我目前遇到的问题是字符串操作逻辑问题。我的目标是将JSON对象的名称存储在字符串数组中。因此,以后访问数据会更容易。但是我遇到的当前问题是输出是我想要或理解它是如何得到它的。目前我正在寻找对象名称之间的引号,并使用str.substring将其返回到字符串,并将其存储在newArr的索引中。输出等于第4个代码段。我还尝试在JSON对象中的对象名称之前和之后放置下划线,然后搜索下划线。从我的测试来看,这只能使用第一个名字,它将返回" foo"在索引0中,而其余索引等于'" _'。我知道我的逻辑在函数中有问题,但我无法确定它是什么。任何帮助将不胜感激

这是正在运行的功能。

exports.jsonObjectToArray = function (objectToTurn){
var oldArr = JSON.stringify(objectToTurn).split(","),
    firstIndex,
    secondIndex,
    newArr = [];
for(let i = 0; i < oldArr.length; i ++){
  firstIndex = oldArr[i].indexOf("\"");
  secondIndex = oldArr[i].indexOf(firstIndex, "\"");
  newArr[i] = oldArr[i].substring(firstIndex, secondIndex);
}
return newArr;
  }

当函数运行时,oldArr将等于此值。

[ '{"foo":"',
'"bar":"0"',
'"Mar":"0"',
'"Car":"0"}' 
]

我的目标是归还这个。哪个将存储在newArr。

[ 
"foo",
"bar",
"Mar",
"Car"
]

但是在函数运行之后,这就是我返回的内容。

[ 
 '{"', 
 'bar":"0',
 'Mar":"0', 
 'Car":"0'
]

2 个答案:

答案 0 :(得分:0)

要从对象获取密钥,只需使用Object.keys()

快速举例:

var obj = {
    foo: '1',
    bar: '2',
    car: '3'
};
console.log(Object.keys(obj)); // ==> (3) ["foo", "bar", "car"]

答案 1 :(得分:0)

让arr = [&#39; {&#34; foo&#34;:&#34;&#39;, &#39;&#34;杆&#34;:&#34; 0&#34;&#39 ;, &#39;&#34;三月&#34;:&#34; 0&#34;&#39 ;, &#39;&#34;车载&#34;:&#34; 0&#34;}&#39; ]

让arr1 = arr.map(el =&gt; el.split(&#39;&#34;&#39;)[1])