#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
. Я надеюсь, что это то, что вы искали