a数组里每一项是对象,对象里有个字段b也是一个数组,b数组每一项是对象,里面有一个字段selected, 我现在要过滤返回selected为true的哪个对象出来
时间: 2024-03-12 11:49:21 浏览: 26
可以使用`Array`的`filter`和`Array`的`some`方法结合来实现。
代码示例:
```javascript
const a = [
{ id: 1, b: [{ id: 1, selected: true }, { id: 2, selected: false }] },
{ id: 2, b: [{ id: 3, selected: true }, { id: 4, selected: true }] },
];
const result = a.filter((objA) =>
objA.b.some((objB) => objB.selected)
);
console.log(result); // [{ id: 1, b: [{ id: 1, selected: true }, { id: 2, selected: false }] }, { id: 2, b: [{ id: 3, selected: true }, { id: 4, selected: true }] }]
```
解释:
1. 使用`filter`方法遍历`a`数组中的每个对象,返回符合条件的对象。
2. 在`filter`方法中使用`some`方法遍历当前对象的`b`数组,如果有一个对象的`selected`属性为`true`,则返回`true`。
3. 如果`some`方法返回`true`,则当前对象符合条件,会被`filter`方法返回。
相关问题
怎么删除数组里面某一项字段
要删除数组里面某一项字段,可以使用以下方法:
1. 遍历数组,找到需要删除的项;
2. 使用 splice() 方法删除该项;
3. 更新数组长度。
具体代码如下:
```
var arr = [{name: '张三', age: 18}, {name: '李四', age: 20}, {name: '王五', age: 22}];
var index = -1;
for (var i = ; i < arr.length; i++) {
if (arr[i].name === '李四') {
index = i;
break;
}
}
if (index !== -1) {
arr.splice(index, 1);
}
console.log(arr); // [{name: '张三', age: 18}, {name: '王五', age: 22}]
```
怎么获取到数组里的每一项里的某个字段
如果你是指在 JavaScript 中获取一个数组中每个元素的某个属性,可以使用 Array.prototype.map() 方法。
例如,假设你有以下数组:
```javascript
const people = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 35 }
];
```
如果你想获取每个元素的 `name` 属性,你可以这样做:
```javascript
const names = people.map(person => person.name);
console.log(names); // 输出 ['Alice', 'Bob', 'Charlie']
```
这个方法会返回一个新的数组,其中每个元素都是原始数组中每个元素的 `name` 属性。