Нарезать последние 2 объекта столбца в многомерном массиве JSON - PullRequest
0 голосов
/ 23 января 2019

Возможно, я пропустил тему с тем же вопросом.Но я не могу понять это.Я хотел бы удалить последние элементы в столбце.Пробовал forEach, но у меня это не сработало, он удаляет полный первый столбец myArr (например).Мейби вместо удаления фрагмента?

Например, у меня есть этот массив JSON (myArr):

    let myArr = JSON.parse(this.responseText);
    let myColumnYears = Object.keys(myArr);
    let myColumnInhabitants = 
    Object.values(myArr[0]);

    myArr.forEach(function() {
          delete myColumnYears[0];
        });

[
 {
    "1996": "7959017",
    "1997": "7968041",
    "1998": "7976789",
    "1999": "7992324",
},
{
    "1996": "10156637",
    "1997": "10181245",
    "1998": "10203008",
    "1999": "10226419",
},
{
    "1996": "7071850",
    "1997": "7088906",
    "1998": "7110001",
    "1999": "7143991",
}
]

И я хотел бы удалить последние 2 объекта каждого массива, чтобы результат стал:

[
{
   "1996": "7959017",
   "1997": "7968041",
},
{
   "1996": "10156637",
   "1997": "10181245",

},
{
   "1996": "7071850",
   "1997": "7088906",
}
]

Я скучаю по тому, чтобы быть немного более конкретным, я думаю.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Что произойдет, если в объектах будет больше значений пары ключей? Вам нужно будет изменить функцию map.

Чтобы избежать этого, вы можете использовать другой способ решения этой проблемы. Попробуйте добавить больше пар ключ-значение в ваши объекты, этот код всегда будет удалять последние две пары ключ-значение.

let data = [
  {"1996": "7959017", "1997": "7968041", "1998": "7976789","1999": "7992324"},
  {"1996": "10156637", "1997": "10181245", "1998": "10203008", "1999": "10226419" },
  {"1996": "7071850", "1997": "7088906", "1998": "7110001", "1999": "7143991" }
];

data.forEach((element, index) => {
  const keys = Object.keys(element);
  
  delete element[keys[keys.length - 1]];
  delete element[keys[keys.length - 2]];
});

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 23 января 2019

Вы можете перебрать массив, используя .map(), выбрать интересующие вас свойства и вернуть их как объект.

let data = [
  {"1996": "7959017", "1997": "7968041", "1998": "7976789","1999": "7992324"},
  {"1996": "10156637", "1997": "10181245", "1998": "10203008", "1999": "10226419" },
  {"1996": "7071850", "1997": "7088906", "1998": "7110001", "1999": "7143991" }
];

let result = data.map(o => ({"1996": o["1996"], "1997": o["1997"]}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...