Замена объекта в массиве местами - PullRequest
1 голос
/ 15 апреля 2019

Функция добавляет объект в массив и делает его вторым в списке. Но в этом случае я цепляюсь за объект и знаю, какой у него номер после создания (5). Как сделать так, чтобы всегда добавлялось второе?

const arr = [{
    "name": "BMW",
    "price": "55 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mercedes-benz",
    "price": "63 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mitsubishi",
    "price": "93 000",
    "constructor": "Bar John",
    "door": "3",
    "country": "Japan",
  },
  {
    "name": "TOYOTA",
    "price": "48 000",
    "max_people": "7",
    "country": "Japan",
    "certificate": "yes"
  },
  {
    "name": "Volkswagen",
    "price": "36 000",
    "constructor": "Pier Sun",
    "country": "Germany",
    "certificate": "no"
  },
];

function pushArr(arr, item) {
  arr.push(item);
  arr[5] = [arr[1], arr[1] = arr[5]][0];
}

let newArr = pushArr(arr, {
  "name": "Audi",
  "price": "89 000",
  "constructor": "Adolf Trump",
  "country": "Germany",
  "certificate": "yes"
});

console.log(arr);

Ответы [ 4 ]

2 голосов
/ 15 апреля 2019

const arr = [{
    "name": "BMW",
    "price": "55 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mercedes-benz",
    "price": "63 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mitsubishi",
    "price": "93 000",
    "constructor": "Bar John",
    "door": "3",
    "country": "Japan",
  },
  {
    "name": "TOYOTA",
    "price": "48 000",
    "max_people": "7",
    "country": "Japan",
    "certificate": "yes"
  },
  {
    "name": "Volkswagen",
    "price": "36 000",
    "constructor": "Pier Sun",
    "country": "Germany",
    "certificate": "no"
  },
];

function pushArr(arr, item) {
  let n = arr.length;
  arr.push(item);
  arr[n] = [arr[1], arr[1] = arr[n]][0];
}

let newArr = pushArr(arr, {
  "name": "Audi",
  "price": "89 000",
  "constructor": "Adolf Trump",
  "country": "Germany",
  "certificate": "yes"
});

let newArr2 = pushArr(arr, {
  "name": "Audi2",
  "price": "100 000",
  "constructor": "Adolf Trump",
  "country": "Germany",
  "certificate": "yes"
});

console.log(arr);
1 голос
/ 15 апреля 2019

Вы можете использовать назначение деструктурирования , чтобы взять первый и оставшийся элементы в переменной и затем поместить входящее значение на второе место, вернуть новый массив

const arr = [{"name": "BMW","price": "55 000","country": "Germany","certificate": "yes"},{"name": "Mercedes-benz","price": "63 000","country": "Germany","certificate": "yes"},
{"name": "Mitsubishi","price": "93 000","constructor": "Bar John","door": "3","country": "Japan" },
 {"name": "TOYOTA","price": "48 000","max_people": "7","country": "Japan","certificate": "yes"},
{"name": "Volkswagen","price": "36 000","constructor": "Pier Sun","country": "Germany","certificate": "no"},];

let atSecondAlways = (arr,newValue) => {
  let [first, ...remaining] = arr
  return [first,newValue,...remaining]
}

let newArr = atSecondAlways(arr,{ "name": "Audi", "price": "89 000",  "constructor": "Adolf Trump", "country": "Germany", "certificate": "yes"});

console.log(newArr);
0 голосов
/ 15 апреля 2019

Вы можете использовать деструктуризацию. не забудьте вернуть массив по пути

const arr = [{
    "name": "BMW",
    "price": "55 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mercedes-benz",
    "price": "63 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mitsubishi",
    "price": "93 000",
    "constructor": "Bar John",
    "door": "3",
    "country": "Japan",
  },
  {
    "name": "TOYOTA",
    "price": "48 000",
    "max_people": "7",
    "country": "Japan",
    "certificate": "yes"
  },
  {
    "name": "Volkswagen",
    "price": "36 000",
    "constructor": "Pier Sun",
    "country": "Germany",
    "certificate": "no"
  },
];

function pushArr(arr, item) {
  const [first, ...rest] = arr;
  return [first, item, ...rest ];
}

let newArr = pushArr(arr, {
  "name": "Audi",
  "price": "89 000",
  "constructor": "Adolf Trump",
  "country": "Germany",
  "certificate": "yes"
});

console.log(newArr);
0 голосов
/ 15 апреля 2019

Вы можете использовать Array.splice (). С помощью этого метода вы можете добавлять или удалять элементы в массиве.

Только будьте осторожны, потому что сращивание влияет на исходный массив, поэтому удобно создавать копию массива перед применением изменения

function pushArr(arr, item) {
  let newArr = [...arr]
  newArr.splice(1,0,item);
  return newArr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...