从JSON对象中选择项目并像c# LINQ一样返回JSON对象

Selecting item from JSON object and return as JSON object like C# LINQ

本文关键字:JSON 对象 一样 返回 LINQ 选择 项目      更新时间:2023-09-26

我有一个JSON对象与大量的数据。我想传递一个JSON对象的web方法,只需要包含一个值的列表。使用 $。grep我们可以像LINQ一样过滤数据。但是我们不能选择项目。(据我所知)。还有别的办法吗?我不想使用任何JS插件除了Jquery (像下划线JS ) !

让我用示例数据来解释。如果我的Json对象是这样的。

data ={"employees":[
    {"firstName":"John", "lastName":"Doe" , "Age":"12"},
    {"firstName":"Anna", "lastName":"Smith", "Age":"13"},
    {"firstName":"Peter", "lastName":"Jones", "Age":"42"}
]};

我想要这样的结果集

data ={"employees":[
    { "Age":"12"},
    { "Age":"13"},
    { "Age":"42"}
]};

by 而不使用for或foreach循环 !有人知道吗?

你可以使用linq.js

var data = { employees: [{ firstName: "John", lastName: "Doe", Age: "12" }, { firstName: "Anna", lastName: "Smith", Age: "13" }, { firstName: "Peter", lastName: "Jones", Age: "42" }] },
    result = Enumerable.From(data.employees).Select('{Age:$.Age}').ToArray();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>

你应该使用map:

var data ={"employees":[
    {"firstName":"John", "lastName":"Doe" , "Age":"12"},
    {"firstName":"Anna", "lastName":"Smith", "Age":"13"},
    {"firstName":"Peter", "lastName":"Jones", "Age":"42"}
]};
function select(data, key, item){
  var selectedData = {}
  selectedData[key] = data[key].map(function(d){return d[item]}) 
  return selectedData;
}
select(data, "employees","Age")

如果您将数据更改为数组而不是对象。你可以利用数组特性,像这样

const data =[
    {"firstName":"John", "lastName":"Doe" , "Age":"12"},
    {"firstName":"Anna", "lastName":"Smith", "Age":"13"},
    {"firstName":"Peter", "lastName":"Jones", "Age":"42"}
];
const data2 = data.map(item => {
  return {Age: item.Age}
})

data2看起来像这样

data2 =[
    { "Age":"12"},
    { "Age":"13"},
    { "Age":"42"}
]