Как получить объекты из массива в angular или javascript

#javascript #angular

#javascript #angular

Вопрос:

У меня есть массив объектов, я хочу получить объекты из ‘Seconditem’ в моем массиве. Я пытался использовать object.keys, но он не работает. Код приведен ниже https://stackblitz.com/edit/angular-pmfjux?file=src/app/app.component.ts

app.component.ts

 import { Component, OnInit } from "@angular/core";

@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  name = "Angular";

  ngOnInit() {
    const sampleArray = [
      {
        mainitem: "My item 1",
        Seconditem: {
          createddate: "30-01-02",
          enddate: "30-01-03"
        }
      }
    ];
    // console.log(sampleArray)
    Object.keys(sampleArray.Seconditem).forEach(key => {
      console.log(key);
    });
  }
}
 

Комментарии:

1. sampleArray это массив, поэтому, если вы хотите получить доступ к первому элементу этого массива, вам нужно будет сделать sampleArray[0]

2. sampleArray.map((val) => { console.log( val.Seconditem.createddate) }) . используйте map() и получайте свои значения.

3. Мне жаль, Наджам, но вы используете map неправильный способ, то есть функциональный оператор, используемый для получения модифицированной версии массива, а не для получения его значений, для их получения вы должны просто использовать forEach

Ответ №1:

вы не можете сделать sampleArray.secondItem поскольку sampleArray — это массив, а не объект

вам нужно выполнить итерацию по массиву, чтобы получить ключи каждого объекта в массиве

     sampleArray.forEach(x => {
      Object.keys(x.Seconditem).forEach(key => {
        console.log(key, ': ', x.SecondItem[key]);
      });
    });
 

я обновил эту ссылку, чтобы распечатать значения объекта
https://stackblitz.com/edit/angular-cckvqe?file=src/app/app.component.ts

Комментарии:

1. Спасибо за ответ, мне нужен весь объект, а не только ключ, который на самом деле выглядит так в консоли createddate: «30-01-02», enddate: «30-01-03»

2. проверьте ссылку, я также обновил ответ, он будет печатать как ключ, так и значение

Ответ №2:

ну, ваш sampleArray — это массив, а не объект, поэтому сначала вам нужно указать индекс, вам просто нужно добавить [0], как в:

 const item = {};

Object.keys(sampleArray[0].Seconditem).forEach(key => {
  item[key] = sampleArray[0].Seconditem[key];
});

console.log({ item });
 

(в любом случае я не уверен, почему это должен быть массив, может быть, вам следует просто преобразовать его в обычный объект, или если это массив, потому что вам также придется добавлять другие объекты, подобные тому, который уже есть, тогда вместо [0] вас понадобится [idx] where idx — это индекс, который вы просматриваете)

Комментарии:

1. Мне нужен весь объект, а не только ключ, на самом деле такой, как в консоли createddate: «30-01-02», enddate: «30-01-03»

2. нет проблем, я отредактировал свой ответ, чтобы напечатать в консоли именно это 🙂

3. Я имею в виду, что мне нужны все значения внутри объекта, подобные этому { createddate: «30-01-02», enddate: «30-01-03» }

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