Как я могу получить последние три значения из массива объектов

У меня есть массив объектов с несколькими значениями. Я хотел бы получить только последние три значения (фамилия владельца, цвет и кора).

Я пытался использовать срез или длину, но безуспешно.

const myValues: MyValues<string>[] = [
   {
    name: "Lucky",
    surname: "Luck",
    age: "3",
    breed: "Shepherd",
    owner: "Paul",
    ownerSurname: "Luck",
    color: "Brown",
    bark: "All the time",
  },
]
const newData = myValues.slice(-3)
<MyComponent value = {newData}/>

🤔 А знаете ли вы, что...
С помощью JavaScript можно создавать клиентские приложения для мобильных устройств с использованием фреймворков, таких как React Native и NativeScript.


58
2

Ответы:

Решено

Это больше относится к простому Javascript, а не к React.

Если вы действительно хотите это знать, сначала вам нужно «получить» сам объект, в данном случае, поскольку это массив с одним единственным элементом, остается только выбрать индекс [0].

const myValues: MyValues<string>[] = [
   {
    name: "Lucky",
    surname: "Luck",
    age: "3",
    breed: "Shepherd",
    owner: "Paul",
    ownerSurname: "Luck",
    color: "Brown",
    bark: "All the time",
  },
]

const obj = myValues[0];

const newObj = { 
  ownerSurname: obj.ownerSurname, 
  bark: obj.bark, 
  color: obj.color 
};

<MyComponent value = {newObj}/>

Это базовые функции JavaScript, не связанные с React. Возможно, вам нужно найти более базовые уроки о том, как работают объекты и массивы в Javascript.


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

Я думаю, вы хотите получить только значения «ownerSurname», «color» и «bark» для каждого из ваших объектов в вашем массиве. Этого можно добиться следующим образом:

[{name: "name", age: 20}].map(value => ({name: value.name}))

В качестве объяснения: этот код отображает каждый объект, а затем возвращает новый объект только с полем «имя». Вы можете изменить этот код на свой конкретный пример.

Я также могу представить, что вы можете захотеть исключить все остальные значения только из одного объекта. Это может быть недоразумением при использовании других языков, таких как phps, где объекты обрабатываются с помощью скобок. Вы можете просто сделать это, удалив скобки из «myValues» следующим образом:

const myObject = {name: "name", age: 19}
const myNewObject = {name: myObject.name}

Обратите внимание, что срез принимает последние три значения массива, а не объекта. Пожалуйста, посмотрите разницу здесь: https://medium.com/@zac_heisey/objects-vs-arrays-42601ff79421