如何使用索引符号访问对象
How to access object using index notation
我正在尝试使用 table 数据制作对象
var cond = [
{
"locality": "Dwarka",
"Created ->OFP": "4.73",
"OFP -> Picked": "2.16",
"Picked - > Delivery": "14.91",
"Over_All_TAT": "22.65",
"Total_Order": "159"
},
{
"locality": "IIT & AIIMS",
"Created ->OFP": "2.56",
"OFP -> Picked": "9.74",
"Picked - > Delivery": "19.41",
"Over_All_TAT": "32.61",
"Total_Order": "54"
},
{
"locality": "Gk1 & Nehru Place",
"Created ->OFP": "2.39",
"OFP -> Picked": "6.87",
"Picked - > Delivery": "14.06",
"Over_All_TAT": "24.13",
"Total_Order": "31"
},
{
"locality": "Mayur Vihar",
"Created ->OFP": "3.52",
"OFP -> Picked": "1.24",
"Picked - > Delivery": "15.3",
"Over_All_TAT": "21.03",
"Total_Order": "33"
},
{
"locality": "Snapdeal_Mundhka",
"Created ->OFP": "17.32",
"OFP -> Picked": "4.65",
"Picked - > Delivery": "100.32",
"Over_All_TAT": "123.16",
"Total_Order": "31"
}
]
我知道键名不符合规则,但这些是列名。我可以访问第二列说 Created -> OFP using index (e.g. cond[0][1]
).
我只能访问 cond[i]
我怎样才能访问内部块元素。
由于我使用的是 R,json 对象是使用 jsonlite 包创建的,所以,我有一些限制。
您可以像这样访问您的元素:
cond[i]["Created ->OFP"]; // "4.73"
如果你想使用像 1, 2 这样的索引,你有两个选择:
使用数组而不是对象,它看起来像这样:
var cond = [
["Dwarka", "4.73", "2.16", "14.91", "22.65", "159" ],
[ ... ]
}
或者您可以在您的对象上使用索引 1、2 ...,如下所示:
var cond = [
{
"0": "Dwarka",
"1": "4.73",
"2": "2.16",
"3": "14.91",
"4": "22.65",
"5": "159"
},
{...}
]
但是您找不到 属性 length
,除非您将它作为元素添加到您的对象中。
我认为最适合您的解决方案是保持对象原样,并使用循环 for(key in cond)
for(var i=0; i<cond.length; i++) {
for(var key in cond[i]) {
console.log(cond[i][key]);
}
}
您可以像这样访问内部块:
cond[i]['Created ->OFP']
循环示例:
var cond = [{
"locality": "Dwarka",
"Created ->OFP": "4.73",
"OFP -> Picked": "2.16",
"Picked - > Delivery": "14.91",
"Over_All_TAT": "22.65",
"Total_Order": "159"
}, {
"locality": "IIT & AIIMS",
"Created ->OFP": "2.56",
"OFP -> Picked": "9.74",
"Picked - > Delivery": "19.41",
"Over_All_TAT": "32.61",
"Total_Order": "54"
}, {
"locality": "Gk1 & Nehru Place",
"Created ->OFP": "2.39",
"OFP -> Picked": "6.87",
"Picked - > Delivery": "14.06",
"Over_All_TAT": "24.13",
"Total_Order": "31"
}, {
"locality": "Mayur Vihar",
"Created ->OFP": "3.52",
"OFP -> Picked": "1.24",
"Picked - > Delivery": "15.3",
"Over_All_TAT": "21.03",
"Total_Order": "33"
}, {
"locality": "Snapdeal_Mundhka",
"Created ->OFP": "17.32",
"OFP -> Picked": "4.65",
"Picked - > Delivery": "100.32",
"Over_All_TAT": "123.16",
"Total_Order": "31"
}]
var val;
cond.forEach(function(el) {
val = el['Created ->OFP'];
console.log(val);
});
据我了解,您希望能够做的是:
cond[0][1]; // "4.73"
你不能那样做,因为 cond[0]
是对象,并且不能保证对象中键的顺序。因此,仅仅因为 Created ->OFP
是您输入的第二个键 并不意味着它实际上是对象中的第二个键。您可以查看 Object.keys(cond[0])
并且键 可能 以相同的顺序返回,但是您 不能依赖这个 。
听起来您需要做的是将数组中的对象(这不是 JSON 正如其他人指出的那样)转换为数组本身。所以你最终会得到类似的东西:
[
[
"Dwarka",
"4.73",
"2.16",
"14.91",
"22.65",
"159"
],...
]
然后你可以这样做:
cond[0][1]; //and get the first row and second column.
要将原始数组转换为数组数组,您可以这样做:
// Note: this is the order **you** want the columns to be iterated in
var columns = ["locality",
"Created ->OFP",
"OFP -> Picked",
"Picked - > Delivery",
"Over_All_TAT",
"Total_Order"];
var arrayOfArrays = cond.map(function (i) {
return columns.map(function (prop) {
return i[prop];
});
});
console.log(arrayOfArrays[0][1]); // logs 4.73
我正在尝试使用 table 数据制作对象
var cond = [
{
"locality": "Dwarka",
"Created ->OFP": "4.73",
"OFP -> Picked": "2.16",
"Picked - > Delivery": "14.91",
"Over_All_TAT": "22.65",
"Total_Order": "159"
},
{
"locality": "IIT & AIIMS",
"Created ->OFP": "2.56",
"OFP -> Picked": "9.74",
"Picked - > Delivery": "19.41",
"Over_All_TAT": "32.61",
"Total_Order": "54"
},
{
"locality": "Gk1 & Nehru Place",
"Created ->OFP": "2.39",
"OFP -> Picked": "6.87",
"Picked - > Delivery": "14.06",
"Over_All_TAT": "24.13",
"Total_Order": "31"
},
{
"locality": "Mayur Vihar",
"Created ->OFP": "3.52",
"OFP -> Picked": "1.24",
"Picked - > Delivery": "15.3",
"Over_All_TAT": "21.03",
"Total_Order": "33"
},
{
"locality": "Snapdeal_Mundhka",
"Created ->OFP": "17.32",
"OFP -> Picked": "4.65",
"Picked - > Delivery": "100.32",
"Over_All_TAT": "123.16",
"Total_Order": "31"
}
]
我知道键名不符合规则,但这些是列名。我可以访问第二列说 Created -> OFP using index (e.g. cond[0][1]
).
我只能访问 cond[i]
我怎样才能访问内部块元素。
由于我使用的是 R,json 对象是使用 jsonlite 包创建的,所以,我有一些限制。
您可以像这样访问您的元素:
cond[i]["Created ->OFP"]; // "4.73"
如果你想使用像 1, 2 这样的索引,你有两个选择: 使用数组而不是对象,它看起来像这样:
var cond = [
["Dwarka", "4.73", "2.16", "14.91", "22.65", "159" ],
[ ... ]
}
或者您可以在您的对象上使用索引 1、2 ...,如下所示:
var cond = [
{
"0": "Dwarka",
"1": "4.73",
"2": "2.16",
"3": "14.91",
"4": "22.65",
"5": "159"
},
{...}
]
但是您找不到 属性 length
,除非您将它作为元素添加到您的对象中。
我认为最适合您的解决方案是保持对象原样,并使用循环 for(key in cond)
for(var i=0; i<cond.length; i++) {
for(var key in cond[i]) {
console.log(cond[i][key]);
}
}
您可以像这样访问内部块:
cond[i]['Created ->OFP']
循环示例:
var cond = [{
"locality": "Dwarka",
"Created ->OFP": "4.73",
"OFP -> Picked": "2.16",
"Picked - > Delivery": "14.91",
"Over_All_TAT": "22.65",
"Total_Order": "159"
}, {
"locality": "IIT & AIIMS",
"Created ->OFP": "2.56",
"OFP -> Picked": "9.74",
"Picked - > Delivery": "19.41",
"Over_All_TAT": "32.61",
"Total_Order": "54"
}, {
"locality": "Gk1 & Nehru Place",
"Created ->OFP": "2.39",
"OFP -> Picked": "6.87",
"Picked - > Delivery": "14.06",
"Over_All_TAT": "24.13",
"Total_Order": "31"
}, {
"locality": "Mayur Vihar",
"Created ->OFP": "3.52",
"OFP -> Picked": "1.24",
"Picked - > Delivery": "15.3",
"Over_All_TAT": "21.03",
"Total_Order": "33"
}, {
"locality": "Snapdeal_Mundhka",
"Created ->OFP": "17.32",
"OFP -> Picked": "4.65",
"Picked - > Delivery": "100.32",
"Over_All_TAT": "123.16",
"Total_Order": "31"
}]
var val;
cond.forEach(function(el) {
val = el['Created ->OFP'];
console.log(val);
});
据我了解,您希望能够做的是:
cond[0][1]; // "4.73"
你不能那样做,因为 cond[0]
是对象,并且不能保证对象中键的顺序。因此,仅仅因为 Created ->OFP
是您输入的第二个键 并不意味着它实际上是对象中的第二个键。您可以查看 Object.keys(cond[0])
并且键 可能 以相同的顺序返回,但是您 不能依赖这个 。
听起来您需要做的是将数组中的对象(这不是 JSON 正如其他人指出的那样)转换为数组本身。所以你最终会得到类似的东西:
[
[
"Dwarka",
"4.73",
"2.16",
"14.91",
"22.65",
"159"
],...
]
然后你可以这样做:
cond[0][1]; //and get the first row and second column.
要将原始数组转换为数组数组,您可以这样做:
// Note: this is the order **you** want the columns to be iterated in
var columns = ["locality",
"Created ->OFP",
"OFP -> Picked",
"Picked - > Delivery",
"Over_All_TAT",
"Total_Order"];
var arrayOfArrays = cond.map(function (i) {
return columns.map(function (prop) {
return i[prop];
});
});
console.log(arrayOfArrays[0][1]); // logs 4.73