如何以JSON数组的形式访问KeyValuePair集合。

问题描述 投票:0回答:1

我在ASP.NET Core 3.1中对一个页面进行Ajax调用。

响应是一个 JsonResultValue 属性是一个自定义类的实例,它本身包含各种字符串和集合属性。

这些集合之一是一个 Dictionary<string, string>,然后我就可以通过JavaScript按照下面的思路访问这些集合。

var dictionary = response.DictionaryObj;

for (key in dictionary) {
    DoSomeStuff(key, dictionary[key]);
}

然而,这些集合中的另一个需要一个非唯一的 "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打包,让我使用前者的语法?

javascript arrays json asp.net-core keyvaluepair
1个回答
0
投票

如果你有一个对象,并且你想遍历它的属性,那么我们可以使用 Object.entries 办法 获取一个给定对象自己的可枚举的字符串-键属性[key, value]对的数组。,然后就用循环 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)
);

1
投票

对于 Dictionary<string, string> 你可以用 对象.条目()

对于 List<KeyValuePair> 对象重构

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.