如何访问 KeyValuePair 集合作为 JSON 数组
How to access KeyValuePair collection as JSON array
我正在 Ajax 调用 ASP.NET Core 3.1 中的一个页面。
响应是 JsonResult
,其 Value
属性 是自定义 class 的实例,它本身包含各种字符串和集合属性。
其中一个集合是 Dictionary<string, string>
,然后我可以在 JavaScript 中按以下行访问它:
var dictionary = response.DictionaryObj;
for (key in dictionary) {
DoSomeStuff(key, dictionary[key]);
}
然而,这些集合中的另一个需要非唯一 'key',目前是 List<KeyValuePair>
这最终在 JavaScript 中作为一个对象数组,我可以像这样访问它:
var kvps = response.KvpList;
for (i = 0; i < kvps.length; i++) {
var kvp = kvps[i];
DoSomeMoreStuff(kvp.key, kvp.value);
}
后者似乎远没有那么优雅 - 有没有一种方法可以让我使用前一种语法来打包 KeyValuePairs?
对于 Dictionary<string, string>
你可以使用 Object.entries()
对于List<KeyValuePair>
object destructuring
const dictionaryObj = {
a: 'somestring',
b: 42,
};
for (const [key, value] of Object.entries(dictionaryObj)) {
console.log(`${key}: ${value}`); // DoSomeStuff(key, value)
}
console.log('===========================================');
const kvpList = [
{ key: '1', value: 'v1' },
{ key: '2', value: 'v2' },
{ key: '3', value: 'v3' },
];
for (const { key, value } of kvpList) {
console.log(`${key}: ${value}`); // DoSomeMoreStuff(key, value)
}
如果你有一个对象,你想遍历它的属性,那么我们可以使用Object.entries
方法到get an array of a given object's own enumerable string-keyed property [key, value] pairs,然后只用循环foreach
:
let input = { "workType": "NDB To Nice", "priority": 5, "name": "Joseph", "lastName": "Skeet" }
const fooFunctiion = (key, value) => {
console.log(`key: ${key}, value ${value}` )
}
Object.entries(input).forEach(([k, v]) => {
fooFunctiion(k, v)
});
如果你有一个对象数组,那么你可以使用foreach
方法:
let input = [
{ "workType": "NDB To Nice", "priority": 5 },
{ "workType": "PDAD", "priority": 0 },
{ "workType": "PPACA", "priority": 0 },
{ "workType": "Retrigger", "priority": "5" },
{ "workType": "Special Intake Request Intake", "priority": "7" }
];
const fooFunction = (obj, index) => {
console.log('obj: ', obj, index )
}
input.forEach((obj, ind) =>
fooFunction(obj, ind)
);
我正在 Ajax 调用 ASP.NET Core 3.1 中的一个页面。
响应是 JsonResult
,其 Value
属性 是自定义 class 的实例,它本身包含各种字符串和集合属性。
其中一个集合是 Dictionary<string, string>
,然后我可以在 JavaScript 中按以下行访问它:
var dictionary = response.DictionaryObj;
for (key in dictionary) {
DoSomeStuff(key, dictionary[key]);
}
然而,这些集合中的另一个需要非唯一 'key',目前是 List<KeyValuePair>
这最终在 JavaScript 中作为一个对象数组,我可以像这样访问它:
var kvps = response.KvpList;
for (i = 0; i < kvps.length; i++) {
var kvp = kvps[i];
DoSomeMoreStuff(kvp.key, kvp.value);
}
后者似乎远没有那么优雅 - 有没有一种方法可以让我使用前一种语法来打包 KeyValuePairs?
对于 Dictionary<string, string>
你可以使用 Object.entries()
对于List<KeyValuePair>
object destructuring
const dictionaryObj = {
a: 'somestring',
b: 42,
};
for (const [key, value] of Object.entries(dictionaryObj)) {
console.log(`${key}: ${value}`); // DoSomeStuff(key, value)
}
console.log('===========================================');
const kvpList = [
{ key: '1', value: 'v1' },
{ key: '2', value: 'v2' },
{ key: '3', value: 'v3' },
];
for (const { key, value } of kvpList) {
console.log(`${key}: ${value}`); // DoSomeMoreStuff(key, value)
}
如果你有一个对象,你想遍历它的属性,那么我们可以使用Object.entries
方法到get an array of a given object's own enumerable string-keyed property [key, value] pairs,然后只用循环foreach
:
let input = { "workType": "NDB To Nice", "priority": 5, "name": "Joseph", "lastName": "Skeet" }
const fooFunctiion = (key, value) => {
console.log(`key: ${key}, value ${value}` )
}
Object.entries(input).forEach(([k, v]) => {
fooFunctiion(k, v)
});
如果你有一个对象数组,那么你可以使用foreach
方法:
let input = [
{ "workType": "NDB To Nice", "priority": 5 },
{ "workType": "PDAD", "priority": 0 },
{ "workType": "PPACA", "priority": 0 },
{ "workType": "Retrigger", "priority": "5" },
{ "workType": "Special Intake Request Intake", "priority": "7" }
];
const fooFunction = (obj, index) => {
console.log('obj: ', obj, index )
}
input.forEach((obj, ind) =>
fooFunction(obj, ind)
);