Javascript 创建包含从父组件发送的对象值的单个数组
嗨,我需要创建一个包含从父组件发送的对象值的角度数组 从父控制台发送的对象。日志('object',o): 将其传递给子组件时使用:Javascript 创建包含从父组件发送的对象值的单个数组,javascript,arrays,angular,object,emit,Javascript,Arrays,Angular,Object,Emit,嗨,我需要创建一个包含从父组件发送的对象值的角度数组 从父控制台发送的对象。日志('object',o): 将其传递给子组件时使用: this.dataSend.emit(object.designator); 在子系统中接收数据: if (this.dataSend) { this.dataSend .subscribe(data => { console.log(data); }); } console.log(data): EPTR130
this.dataSend.emit(object.designator);
在子系统中接收数据:
if (this.dataSend) {
this.dataSend
.subscribe(data => {
console.log(data);
});
}
console.log(data):
EPTR130B
EPTR130A
EPTR25
...etc
我应该如何接收像[EPTR130B,EPTR130A,EPTR25…]这样的数组?地图?推
编辑:
我做了一些更改,并将数据作为对象传递给具有this.dataSend.emit({data})的子对象代码>
并收到:
{data: Array(63)}
data: Array(63)
0: {type: "ADHOC", designator: "UAV1", availabilities: Array(1), info: Array(2), geometry: {…}}
1: {type: "TRA", designator: "EPTR130B", availabilities: Array(1), info: Array(2), geometry: {…}}
2: {type: "TRA", designator: "EPTR130A", availabilities: Array(1), info: Array(2), geometry: {…}} ...etc
您应该能够使用Rxjs的map
和数组的map
来完成
尝试:
===============================编辑==============================
使用点击
操作符进行调试,您可以卸下窗帘,并查看在该时间点上观察到的情况。我已经尝试了几件事情,我不知道它对数组和对象的操作方式是否干净,但它可以工作:
.subscribe(data => {
console.log(data);
let arr: any[] = [];
Object.keys(data).forEach(function(item) {
for(let i=0; i<data[item].length; i++){
arr.push(data[item][i].designator);
}
console.log(arr);
});
});
.subscribe(数据=>{
控制台日志(数据);
设arr:any[]=[];
Object.key(数据).forEach(函数(项){
对于(让我=0;我可能有用:我一直在尝试这样做,没有结果。这样我接收dataArray.map不是一个函数谢谢,但是它给了我日志:dataArray before filter:[对象对象]
不幸的是,没有,console.log('check',data);
甚至连“check”字符串都没有显示在控制台中。。
import { filter, map, tap } from 'rxjs/operators'
......
this.dataSend
.pipe(
tap((dataArray: any) => console.log(`dataArray before filter: ${dataArray}`)),
// allow emissions where dataArray is truthy and it has length > 0
filter((dataArray: any) => !!dataArray && dataArray.length),
tap((dataArray: any) => console.log(`dataArray after filter: ${dataArray}`)),
map((dataArray: any) => dataArray.map(data => data.designation)),
)
.subscribe(data => {
console.log(data);
});
.subscribe(data => {
console.log(data);
let arr: any[] = [];
Object.keys(data).forEach(function(item) {
for(let i=0; i<data[item].length; i++){
arr.push(data[item][i].designator);
}
console.log(arr);
});
});