Создайте новый объект JSON с помощью ключа - PullRequest
0 голосов
/ 18 мая 2018

Я искал переполнение стека около 30 минут, но я не уверен, что могу использовать фильтр, карту или уменьшение.У меня есть следующий JSON

Вход

[
  {
    "_id": "5a3711070776d02ed87d2100",
    "index": 0,
    "guid": "fb08e9c3-c5b6-44e9-a4c6-73edcfbc8ae9",
    "isActive": false,
    "balance": "$2,762.54",
    "picture": "http://placehold.it/32x32",
    "age": 39,
    "eyeColor": "brown",
    "name": "Crystal Sampson",
    "gender": "female",
    "company": "ZAGGLE",
    "email": "crystalsampson@zaggle.com",
    "phone": "+1 (822) 582-2186",
    "address": "836 Batchelder Street, Harviell, Indiana, 966",
    "about": "Duis eu irure mollit sit voluptate proident do reprehenderit irure sunt irure tempor. Elit commodo mollit Lorem esse elit ea nostrud. Commodo cillum ipsum enim incididunt aliquip consectetur cillum cillum commodo et aliquip.\r\n",
    "registered": "2017-01-31T09:56:39 -07:00",
    "latitude": 18.386331,
    "longitude": -3.807078,
    "tags": [
      "laboris",
      "reprehenderit",
      "aliqua",
      "ipsum",
      "in",
      "consequat",
      "anim"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Lily Mullen"
      },
      {
        "id": 1,
        "name": "Smith Howard"
      },
      {
        "id": 2,
        "name": "Ronda Stafford"
      }
    ],
    "greeting": "Hello, Crystal Sampson! You have 2 unread messages.",
    "favoriteFruit": "banana"
  }]

Выход

[{"name": "Crystal Sampson",
"gender": "female",
"company": "ZAGGLE",
"email": "crystalsampson@zaggle.com"}]

Я хочу уменьшитьключ, который меня интересует.Большое вам спасибо.

Ответы [ 5 ]

0 голосов
/ 18 мая 2018

Действительно ли документ из коллекции в MongoDB ??Почему бы не использовать проекции ?

Если вы не хотите использовать проекции, у вас есть другая альтернатива, помните, JSON - это объект, поэтому:

var obj = new Object(); 
obj['XKey1'] = "Value1";
obj['XKey2'] = "Value2";
obj['YKey3'] = "Value3";
obj['YKey4'] = "Value4";


Object.keys(obj).map(function(objectKey, index) {
  if(objectKey=='YKey3') delete obj[objectKey];
});

console.log(obj)
0 голосов
/ 18 мая 2018

По вашему вопросу, я использовал функцию карты для итерации по вашему массиву.

Google больше о разнице между картой, фильтром и уменьшением.Вы получите фантастические примеры.И попробуйте их самостоятельно.

var arrResult = [];

var InputObject = [{
"_id": "5a3711070776d02ed87d2100",
"index": 0,
"guid": "fb08e9c3-c5b6-44e9-a4c6-73edcfbc8ae9",
"isActive": false,
"balance": "$2,762.54",
"picture": "http://placehold.it/32x32",
"age": 39,
"eyeColor": "brown",
"name": "Crystal Sampson",
"gender": "female",
"company": "ZAGGLE",
"email": "crystalsampson@zaggle.com",
"phone": "+1 (822) 582-2186",
"address": "836 Batchelder Street, Harviell, Indiana, 966",
"about": "Duis eu irure mollit sit voluptate proident do reprehenderit irure sunt irure tempor. Elit commodo mollit Lorem esse elit ea nostrud. Commodo cillum ipsum enim incididunt aliquip consectetur cillum cillum commodo et aliquip.\r\n",
"registered": "2017-01-31T09:56:39 -07:00",
"latitude": 18.386331,
"longitude": -3.807078,
"tags": [
  "laboris",
  "reprehenderit",
  "aliqua",
  "ipsum",
  "in",
  "consequat",
  "anim"
],
"friends": [
  {
    "id": 0,
    "name": "Lily Mullen"
  },
  {
    "id": 1,
    "name": "Smith Howard"
  },
  {
    "id": 2,
    "name": "Ronda Stafford"
  }
],
"greeting": "Hello, Crystal Sampson! You have 2 unread messages.",
"favoriteFruit": "banana"}];


InputObject.map((x)=>{
    var obj = {
        "name": x.name,
        "gender": x.gender,
        "company": x.company,
        "email": x.email
    };
    arrResult.push(obj);
});

console.log(arrResult);
0 голосов
/ 18 мая 2018

То, что вы хотите сделать, это .map над массивом и создавать новые объекты только с ключами, которые вас интересуют.

const input = [
  {
    "_id": "5a3711070776d02ed87d2100",
    "index": 0,
    "guid": "fb08e9c3-c5b6-44e9-a4c6-73edcfbc8ae9",
    "isActive": false,
    "balance": "$2,762.54",
    "picture": "http://placehold.it/32x32",
    "age": 39,
    "eyeColor": "brown",
    "name": "Crystal Sampson",
    "gender": "female",
    "company": "ZAGGLE",
    "email": "crystalsampson@zaggle.com",
    "phone": "+1 (822) 582-2186",
    "address": "836 Batchelder Street, Harviell, Indiana, 966",
    "about": "Duis eu irure mollit sit voluptate proident do reprehenderit irure sunt irure tempor. Elit commodo mollit Lorem esse elit ea nostrud. Commodo cillum ipsum enim incididunt aliquip consectetur cillum cillum commodo et aliquip.\r\n",
    "registered": "2017-01-31T09:56:39 -07:00",
    "latitude": 18.386331,
    "longitude": -3.807078,
    "tags": [
      "laboris",
      "reprehenderit",
      "aliqua",
      "ipsum",
      "in",
      "consequat",
      "anim"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Lily Mullen"
      },
      {
        "id": 1,
        "name": "Smith Howard"
      },
      {
        "id": 2,
        "name": "Ronda Stafford"
      }
    ],
    "greeting": "Hello, Crystal Sampson! You have 2 unread messages.",
    "favoriteFruit": "banana"
  }];
  
  const output = input.map(element => {
    return {
      name: element.name,
      gender: element.gender,
      company: element.company,
      email: element.email
    }
  });
  
  console.log(output);
0 голосов
/ 18 мая 2018

Вы можете сделать что-то вроде фильтра:

var input = [{
  "_id": "5a3711070776d02ed87d2100",
  "index": 0,
  "guid": "fb08e9c3-c5b6-44e9-a4c6-73edcfbc8ae9",
  "isActive": false,
  "balance": "$2,762.54",
  "picture": "http://placehold.it/32x32",
  "age": 39,
  "eyeColor": "brown",
  "name": "Crystal Sampson",
  "gender": "female",
  "company": "ZAGGLE",
  "email": "crystalsampson@zaggle.com",
  "phone": "+1 (822) 582-2186",
  "address": "836 Batchelder Street, Harviell, Indiana, 966",
  "about": "Duis eu irure mollit sit voluptate proident do reprehenderit irure sunt irure tempor. Elit commodo mollit Lorem esse elit ea nostrud. Commodo cillum ipsum enim incididunt aliquip consectetur cillum cillum commodo et aliquip.\r\n",
  "registered": "2017-01-31T09:56:39 -07:00",
  "latitude": 18.386331,
  "longitude": -3.807078,
  "tags": [
    "laboris",
    "reprehenderit",
    "aliqua",
    "ipsum",
    "in",
    "consequat",
    "anim"
  ],
  "friends": [{
      "id": 0,
      "name": "Lily Mullen"
    },
    {
      "id": 1,
      "name": "Smith Howard"
    },
    {
      "id": 2,
      "name": "Ronda Stafford"
    }
  ],
  "greeting": "Hello, Crystal Sampson! You have 2 unread messages.",
  "favoriteFruit": "banana"
}];
console.log(input.map(function (item) {
  return {
    name: item.name,
    gender: item.gender,
    company: item.company,
    email: item.email
  };
}));
0 голосов
/ 18 мая 2018

Вы можете использовать простой цикл for для объекта во внешнем массиве, а затем для ключей объекта, чтобы проверить, существует ли ключ в массиве selectedKey, который вы хотите рассмотреть.Использование selectedKey поможет вам легко масштабировать любые нужные вам ключи, просто укажите их в массиве selectedKey.

var data = [
  {
    "_id": "5a3711070776d02ed87d2100",
    "index": 0,
    "guid": "fb08e9c3-c5b6-44e9-a4c6-73edcfbc8ae9",
    "isActive": false,
    "balance": "$2,762.54",
    "picture": "http://placehold.it/32x32",
    "age": 39,
    "eyeColor": "brown",
    "name": "Crystal Sampson",
    "gender": "female",
    "company": "ZAGGLE",
    "email": "crystalsampson@zaggle.com",
    "phone": "+1 (822) 582-2186",
    "address": "836 Batchelder Street, Harviell, Indiana, 966",
    "about": "Duis eu irure mollit sit voluptate proident do reprehenderit irure sunt irure tempor. Elit commodo mollit Lorem esse elit ea nostrud. Commodo cillum ipsum enim incididunt aliquip consectetur cillum cillum commodo et aliquip.\r\n",
    "registered": "2017-01-31T09:56:39 -07:00",
    "latitude": 18.386331,
    "longitude": -3.807078,
    "tags": [
      "laboris",
      "reprehenderit",
      "aliqua",
      "ipsum",
      "in",
      "consequat",
      "anim"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Lily Mullen"
      },
      {
        "id": 1,
        "name": "Smith Howard"
      },
      {
        "id": 2,
        "name": "Ronda Stafford"
      }
    ],
    "greeting": "Hello, Crystal Sampson! You have 2 unread messages.",
    "favoriteFruit": "banana"
  }];
  
var selectedKey = ['name','company','gender', 'email'];

var res = [];
data.forEach((obj)=>{
  Object.keys(obj).forEach((key)=>{
    if(selectedKey.indexOf(key) !== -1){
      var tempObj = {};
      tempObj[key] = obj[key]
      res.push(tempObj);
    }
  });
});

console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...