Javascript 如何在JSON中获取键的值

Javascript 如何在JSON中获取键的值,javascript,jquery,json,Javascript,Jquery,Json,我有这样一个JSON: var arrStages = [ { "strID" : "ID-0001" , "intStageNum" : 1 , "strNumOfDays": 1 }, { "strID" : "ID-0003" , "intStageNum" : 3 , "strNumOfDays": 14}, { "strID" : "ID-0002" , "intStageNum" : 2 , "strNumOfDays":

我有这样一个JSON:

var arrStages = [                 
    { "strID" : "ID-0001" , "intStageNum" : 1 , "strNumOfDays": 1 }, 
    { "strID" : "ID-0003" , "intStageNum" : 3 , "strNumOfDays": 14}, 
    { "strID" : "ID-0002" , "intStageNum" : 2 , "strNumOfDays": 3 },
    { "strID" : "ID-0006" , "intStageNum" : 6 , "strNumOfDays": 3 },
    { "strID" : "ID-0004" , "intStageNum" : 4 , "strNumOfDays": 3 },
    { "strID" : "ID-0005" , "intStageNum" : 5 , "strNumOfDays": 3 },
];

我怎样才能得到一个特定的属性,比如说我想要每个属性的strNumOfDays?我必须使用$.each吗?

您也可以使用Javascript的map或forEach,因为它是一个数组。它也比每个美元简单一点

var ARR阶段=[ {strID:ID-0001,intStageNum:1,strNumOfDays:1}, {strID:ID-0003,intStageNum:3,strNumOfDays:14}, {strID:ID-0002,intStageNum:2,strNumOfDays:3}, {strID:ID-0006,intStageNum:6,strNumOfDays:3}, {strID:ID-0004,intStageNum:4,strNumOfDays:3}, {strID:ID-0005,intStageNum:5,strNumOfDays:3}, ]; //地图 var newArray=arrStages.mapfunctionstring{ 返回string.strNumOfDays; }; console.lognewArray; //地图 arrStages.forEachfunctionstring{ console.logstring.strNumOfDays; }; //jQuery-each $.eachr阶段,函数键{ console.logarrStages[key].strNumOfDays; }; 你可以在通缉令上用闭包

函数getValueskey{ 返回函数对象{ 返回对象[键]; }; } var ARRTAGES=[{strID:ID-0001,intStageNum:1,天数:1},{strID:ID-0003,intStageNum:3,天数:14},{strID:ID-0002,intStageNum:2,天数:3},{strID:ID-0006,intStageNum:6,天数:3},{strID:ID-0004,intStageNum:4,天数:3,{strID:0005,天数:3}; console.logarrStages.mapgetValues'strNumOfDays'; .作为控制台包装{最大高度:100%!重要;顶部:0;} 我必须使用美元吗

你需要某种循环结构,是的。例如,for循环,或者Array.prototype的特性,或者在ES2015又称ES6和更高版本的for循环中,或者是的,您可以使用jQuery的$.each或$.map。例如,我们可以使用arrStages.map获得这些值的数组:

或者在ES2015+中:

let days = arrStages.map(entry => entry.strNumOfDays);
ES5中的示例:

var ARR阶段=[ {strID:ID-0001,intStageNum:1,strNumOfDays:1}, {strID:ID-0003,intStageNum:3,strNumOfDays:14}, {strID:ID-0002,intStageNum:2,strNumOfDays:3}, {strID:ID-0006,intStageNum:6,strNumOfDays:3}, {strID:ID-0004,intStageNum:4,strNumOfDays:3}, {strID:ID-0005,intStageNum:5,strNumOfDays:3}, ]; var days=arrStages.mapfunctionentry{ 返回条目.strNumOfDays; }; 控制台。对数天 也可以使用

它通过接收两个参数来工作——一个为数组上的每次迭代调用的函数和一个初始值。在第一次迭代中,初始值作为其第一个参数传递给提供的函数。第二个参数是当前迭代的数组元素curr。我们只需在memo中推送所需的属性并返回memo。它需要返回,因为reduce使用返回的值作为下一次迭代的备忘。基本上,reduce的第二个参数是一个空数组,在这个数组中,我们在迭代之间传递新值的同时推送新值。该数组随最后一次迭代一起返回,并存储在days变量中

var ARR阶段=[ {strID:ID-0001,intStageNum:1,strNumOfDays:1}, {strID:ID-0003,intStageNum:3,strNumOfDays:14}, {strID:ID-0002,intStageNum:2,strNumOfDays:3}, {strID:ID-0006,intStageNum:6,strNumOfDays:3}, {strID:ID-0004,intStageNum:4,strNumOfDays:3}, {strID:ID-0005,intStageNum:5,strNumOfDays:3}, ]; var天数=arrStages.reducefunction备忘,当前{ memo.pushcurr.strNumOfDays; 返回备忘录; }, [];
控制台。对数天 这是解决您问题的ES6解决方案:

arrStages.forEach((arrStage) => {
    console.log(arrStage["strNumOfDays"]);
});
我想这就是你想要的


希望有帮助。

是的!这可能是最简单的答案。arrStages.forEachfunctionstage{console.logstage.strNumOfDays;}JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么您就不是在处理JSON。请同时添加所需的结果。您还应该指出,他可以使用Array.prototype.forEach。当然,也添加了这一点!如果未使用.map的返回值,则应使用.forEach。语义问题。您可以这样做,但是.map更简单。True。但是,如果您想跳过某些属性,例如,map不会执行此操作,因为它总是保存返回的值。有了reduce,你就有了更多的控制权。此外,这仍然是一个合法的解决方案,所以我决定发布它。他说他想得到他们每个人的财产,而不仅仅是ID-0003。
arrStages.forEach((arrStage) => {
    console.log(arrStage["strNumOfDays"]);
});