如何将KeyValuePair集合作为JSON数组访问

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

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

这些集合之一是Dictionary<string,string>,然后可以通过以下几行在JavaScript中进行访问:

var dictionary = response.DictionaryObj;

for (key in dictionary) {
    DoSomeStuff(key,dictionary[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的方法?

iCMS 回答:如何将KeyValuePair集合作为JSON数组访问

对于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",{ "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)
);

本文链接:https://www.f2er.com/2180781.html

大家都在问