Javascript 如果为true,则从数组中的对象获取特定属性

Javascript 如果为true,则从数组中的对象获取特定属性,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我有一个像这样的对象: export default class Widget { public title: string; public url: string; public icon: string; public id: string; public defaultWidget: boolean; } 我有一个包含所有小部件的数组,所有小部件。当defaultWidget为true时,我想从这个数组中提取id 所以当另一个property defaultWidget为true时,

我有一个像这样的对象:

export default class Widget {
public title: string;
public url: string;
public icon: string;
public id: string;
public defaultWidget: boolean;
  }
我有一个包含所有小部件的数组,所有小部件。当defaultWidget为true时,我想从这个数组中提取id

所以当另一个property defaultWidget为true时,我想从这个对象id中提取一个属性。到目前为止,我已经:

const newArray = allWidgets.map(element => element.defaultWidget);
但是,它只为它拥有的每个true对象返回true。但是我希望它返回defaultWidget为true的ID。

您可以使用defaultWidget===true获取widget,然后使用获取ID

过滤器和映射都将创建新数组

或者你可以试着用它来创作所有的作品

如果使用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;
}, []);

const newArray=allWidgets.filterobj=>obj.defaultWidget.mapobj=>obj.id

上面的数组将为您提供defaultWidget为true的id列表


这里Filter会根据条件过滤数组,map会创建一个只包含id的新数组。在JavaScript中,您可以尝试以下代码:如果married=true,则返回id列表

// Try edit msg
var emps = [
 {id: 1, name: "Employee1", married: true},
 {id: 2, name: "Employee1", married: false},
 {id: 3, name: "Employee1", married: true}
]

// getting list of ids of employees if married is true
var idList = emps.map(obj => {
  if (obj['married'] == true) {
    return obj.id 
  } 

})

// removing null values from list 
idList = idList.filter(ele => ele!=null);

console.log(idList);   

// output: [1, 3]