Javascript 如何从这个JSON数组中删除不需要的元素?
我收到一个包含JSON数组的API的以下响应,我正在尝试删除除title、column和searchSourceJSON之外的所有元素:Javascript 如何从这个JSON数组中删除不需要的元素?,javascript,arrays,json,Javascript,Arrays,Json,我收到一个包含JSON数组的API的以下响应,我正在尝试删除除title、column和searchSourceJSON之外的所有元素: "hits": [ { "_index": ".example_demo", "_type": "search", "_id": "demo-Media-Integration-Enabled", "_score": 1, "_source": {
"hits": [
{
"_index": ".example_demo",
"_type": "search",
"_id": "demo-Media-Integration-Enabled",
"_score": 1,
"_source": {
"title": "demo Media Integration - Enabled",
"description": "",
"hits": 0,
"columns": [
"_source"
],
"sort": [
"timestamp",
"asc"
],
"version": 1,
"exampleSavedObjectMeta": {
"searchSourceJSON": "{\"index\":\"[demo-]YYYY.MM\",\"highlight\":{\"pre_tags\":[\"@example-highlighted-field@\"],\"post_tags\":[\"@/example-highlighted-field@\"],\"fields\":{\"*\":{}},\"fragment_size\":2147483647},\"filter\":[{\"meta\":{\"negate\":false,\"index\":\"[demo-]YYYY.MM\",\"key\":\"_type\",\"value\":\"Media Integration\",\"disabled\":false},\"query\":{\"match\":{\"_type\":{\"query\":\"Media Integration\",\"type\":\"phrase\"}}}},{\"meta\":{\"negate\":false,\"index\":\"[demo-]YYYY.MM\",\"key\":\"Action\",\"value\":\"Enable\",\"disabled\":false},\"query\":{\"match\":{\"Action\":{\"query\":\"Enable\",\"type\":\"phrase\"}}}}],\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}}}"
}
}
},
{
"_index": ".example_demo",
"_type": "search",
"_id": "demo-Media-Import-True",
"_score": 1,
"_source": {
"title": "demo Media Import - True",
"description": "",
"hits": 0,
"columns": [
"FormFactor",
"_type",
"Identity"
],
"sort": [
"_type",
"asc"
],
"version": 1,
"exampleSavedObjectMeta": {
"searchSourceJSON": "{\"index\":\"[demo-]YYYY.MM\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"highlight\":{\"pre_tags\":[\"@example-highlighted-field@\"],\"post_tags\":[\"@/example-highlighted-field@\"],\"fields\":{\"*\":{}},\"fragment_size\":2147483647},\"filter\":[{\"meta\":{\"disabled\":false,\"index\":\"[demo-]YYYY.MM\",\"key\":\"_type\",\"negate\":false,\"value\":\"Media Import\"},\"query\":{\"match\":{\"_type\":{\"query\":\"Media Import\",\"type\":\"phrase\"}}}},{\"meta\":{\"negate\":false,\"index\":\"[demo-]YYYY.MM\",\"key\":\"Successful\",\"value\":\"True\",\"disabled\":false},\"query\":{\"match\":{\"Successful\":{\"query\":\"True\",\"type\":\"phrase\"}}}}]}"
}
}
}
]
有人能帮我找出如何使用JavaScript从这个JSON文档中删除不需要的元素吗
编辑:回答,谢谢大家提供的大量信息 一种省力的方法是使用
Array#Map
,然后只选择所需的元素
var hits=[
{
“_索引”:“.example_demo”,
“_类型”:“搜索”,
“_id”:“已启用演示媒体集成”,
“_分数”:1,
“_来源”:{
“标题”:“演示媒体集成-已启用”,
“说明”:“,
“点击数”:0,
“栏目”:[
“_来源”
],
“排序”:[
“时间戳”,
“asc”
],
“版本”:1,
“exampleSavedObjectMeta”:{
“searchSourceJSON”:“{\”索引\“:\”[demo-]YYYY.MM\”,“highlight\”:{\“pre\u tags\”:[\”@example highlighted field@\”],“post\u tags\”:[\”@/example highlighted field@\”,“fields\”:{\”,“{\”,“fragment\u size\”:2147483647},\,“filter\”:[{\”:[{“meta\”:{“negate\”:“negate\”:false,\”,“index\”:“:“[yyyyyy-”,“,”,“媒体集成类型:”,“,”禁用“,“媒体\\”\以下几点是:假若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若{\'query\'u string\':{\'query\':\“*\”\“分析\u通配符\”:true}}}”
}
}
},
{
“_索引”:“.example_demo”,
“_类型”:“搜索”,
“_id”:“演示媒体导入为真”,
“_分数”:1,
“_来源”:{
“标题”:“演示媒体导入-正确”,
“说明”:“,
“点击数”:0,
“栏目”:[
“FormFactor”,
“_类型”,
“身份”
],
“排序”:[
“_类型”,
“asc”
],
“版本”:1,
“exampleSavedObjectMeta”:{
“搜索资源”的搜索源JSJS动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动演示-]纽约市的一名名名男子男子担任今年的一名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名名\“查询\:\“真实\”,\“类型\:\”短语\“}}}]}”
}
}
}
]
var filtered=hits.map(函数(hit){
返回{title:hit.\u source.title,searchSourceJSON:hit.\u source.exampleSavedObjectMeta.searchSourceJSON,columns:hit.\u source.columns}
})
console.log(过滤)
您可以解析JSON,然后映射以创建一个新数组,其中包含仅具有所需属性的对象:
const data = JSON.parse(yourJSON);
const hits = data.hits.map(hit => ({
title: hit._source.title,
searchSourceJSON: hit._source.exampleSavedObjectMeta.searchSourceJSON
});
您可以:
- 使用一种方法来获得所有结果(往往代价高昂)
- 或者,这似乎是对弹性搜索的请求,以过滤掉ES发送的响应。因此,减少了网络流量,您可以避免清理数据的需要
\u搜索?筛选\u路径=点击次数。点击次数。\u来源
var result=(function(){//IIFE to enshure garbage collection
var hits=[...];//your data
return hits.map(hit=>{hit["_source"].title,hit["_source"].colums,hit.exampleSavedObjectMeta.searchSourceJSON});
});
这将删除除所需属性之外的所有属性(垃圾收集它们)。尝试以下操作:
var jsonObj=[
{
“_索引”:“.example_demo”,
“_类型”:“搜索”,
“_id”:“已启用演示媒体集成”,
“_分数”:1,
“_来源”:{
“标题”:“演示媒体集成-已启用”,
“说明”:“,
“点击数”:0,
“栏目”:[
“_来源”
],
“排序”:[
“时间戳”,
“asc”
],
“版本”:1,
“exampleSavedObjectMeta”:{
“searchSourceJSON”:“{\”索引\“:\”[demo-]YYYY.MM\”,“highlight\”:{\“pre\u tags\”:[\”@example highlighted field@\”],“post\u tags\”:[\”@/example highlighted field@\”,“fields\”:{\”,“{\”,“fragment\u size\”:2147483647},\,“filter\”:[{\”:[{“meta\”:{“negate\”:“negate\”:false,\”,“index\”:“:“[yyyyyy-”,“,”,“媒体集成类型:”,“,”禁用“,“媒体\\”\以下几点是:假若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若若{\'query\'u string\':{\'query\':\“*\”\“分析\u通配符\”:true}}}”
}
}
},
{
“_索引”:“.example_demo”,
“_类型”:“搜索”,
“_id”:“演示媒体导入为真”,
“_分数”:1,
“_来源”:{
“标题”:“演示媒体导入-正确”,
“说明”:“,
“点击数”:0,
“栏目”:[
“FormFactor”,
“_类型”,
“身份”
],
“排序”:[
“_类型”,
“asc”
],
“版本”:1,
“exampleSavedObjectMeta”:{
“searchSourceJSON”:“{\”索引\“:\”[demo-]YYYY.MM\”,““查询\“:{\”查询字符串\“:{\”分析通配符\“:true,\”查询\“:\”:\”*“}},\”突出显示\“:[\”@示例突出显示字段@\”],“后标记\“:[\”@/示例突出显示字段@\”],\“\”,“\”字段\“:{\”:“*”,\”,“{\”,片段大小\\:{2}