js 数组对象深层 通过某个属性查找符合的对象
时间: 2023-10-11 19:05:57 浏览: 238
你可以使用数组的 `find` 方法结合箭头函数来查找符合条件的对象。例如,假设你有一个对象数组 `arr`,其中每个对象都有一个 `info` 属性,你想查找其中 `info` 属性为某个值的对象,可以这样写:
```javascript
const result = arr.find(item => item.info === '某个值');
```
如果你想查找多个符合条件的对象,可以使用 `filter` 方法。例如,假设你想查找所有 `info` 属性为某个值的对象,可以这样写:
```javascript
const results = arr.filter(item => item.info === '某个值');
```
以上两种方法都是深层查找,即对象可以有多层嵌套,你可以通过 `.` 连接属性名来访问内部属性。例如,假设你的对象数组中每个对象都有一个嵌套的 `data` 对象,你想查找其中 `data` 对象的 `info` 属性为某个值的对象,可以这样写:
```javascript
const result = arr.find(item => item.data.info === '某个值');
const results = arr.filter(item => item.data.info === '某个值');
```
希望这个回答能够解决你的问题。
相关问题
js 数组对象深层查找
可以使用递归函数进行深层查找。以下是一个示例函数,可以在一个嵌套的对象数组中查找特定的属性值:
```javascript
function findInNestedArray(arr, propName, propValue) {
for (var i = 0; i < arr.length; i++) {
if (arr[i][propName] === propValue) {
return arr[i];
} else if (typeof arr[i] === 'object') {
var foundObj = findInNestedArray(arr[i], propName, propValue);
if (foundObj) {
return foundObj;
}
}
}
return null;
}
```
在上面的函数中,`arr` 是需要查找的嵌套数组,`propName` 是需要查找的属性名称,`propValue` 是需要查找的属性值。函数首先遍历数组中的每个元素,如果找到了匹配的属性值,就返回该元素。否则,如果当前元素是一个对象,就递归地在该对象中查找。如果没有找到任何匹配项,函数最终返回 `null`。
js根据children来判断,每次都拿到递归对象数组的第一层的最子级的第一个对象
可以使用递归来实现遍历子节点,找到最深层的第一个子节点。
假设有一个DOM结构如下:
```html
<div id="parent">
<div>
<span>第一层第一个子节点</span>
</div>
<div>
<div>
<span>第二层第一个子节点</span>
</div>
</div>
</div>
```
可以编写以下递归函数:
```javascript
function findFirstChildren(node) {
if (!node.children || node.children.length === 0) {
// 没有子节点,则当前节点就是最深层的节点
return node;
} else {
// 有子节点,则递归查找第一个子节点
return findFirstChildren(node.children[0]);
}
}
// 以parent为根节点,找到最深层的第一个子节点
const firstChild = findFirstChildren(document.getElementById('parent'));
console.log(firstChild); // 输出 <span>第一层第一个子节点</span>
```
这里的 `findFirstChildren` 函数接收一个节点作为参数,如果该节点没有子节点,则说明当前节点就是最深层的节点,直接返回该节点;否则,递归查找第一个子节点。通过反复递归,最终可以找到最深层的第一个子节点。
阅读全文