我有一个看起来像这样的对象:

export default class Widget {
public title: string;
public url: string;
public icon: string;
public id: string;
public defaultWidget: boolean;
  }


我有一个包含所有小部件allArrays的数组。当defaultWidget为true时,我想从此数组中提取ID。

因此,当另一个属性(defaultWidget)为true时,我想从此对象(id)中提取一个属性。到目前为止,我有:

const newArray = allWidgets.map(element => element.defaultWidget);


但是,它只为它拥有的每个真实对象返回true。但是我希望它返回defaultWidget为true的ID。

最佳答案

您可以使用filter获取具有defaultWidget === true的小部件,然后使用map获取ID。

filtermap都将创建新数组。

或者,您可以尝试使用reduce组成所有内容。

如果是reduce,则将创建一次新数组。

const newArray = allWidgets.filter(widget => widget.defaultWidget).map(widget => widget.id)

// or

const newArray = allWidgets.reduce((acc, elem) => {
  if (elem.defaultWidget) {
    acc.push(elem.id);
  }

  return acc;
}, []);

09-12 05:40