let arr = [ { id: 1, }, { id: 5, }, { id: 2, cols: [ { children: [ { id: 3, }, ], }, { children: [ { id: 4, }, ], }, ], }, ]; let b = 3; 在arr中找到b==3的那一个对象
时间: 2023-11-27 17:53:45 浏览: 48
可以使用数组的 `find` 方法来查找数组中符合条件的元素,代码如下:
```javascript
let result = arr.find(item => {
if (item.id === b) {
return true;
}
if (Array.isArray(item.cols)) {
return item.cols.some(col => {
if (Array.isArray(col.children)) {
return col.children.some(child => child.id === b);
}
return false;
});
}
return false;
});
```
这里使用了嵌套的 `some` 方法来查找嵌套的数组中是否存在符合条件的元素。最终返回的 `result` 就是找到的那个对象。如果没有找到,则 `result` 为 `undefined`。
相关问题
let arr =[ {id:'1', value:10}, {id:'1', value:20} ] 期望let arr =[ {id:'1', value:[10,20]}]
你想将给定的数组 `arr` 转换为一个新的结构,其中每个对象如果有相同的 `id`,则对应的 `value` 应该合并成一个数组。这可以通过 JavaScript 的 `reduce()` 函数以及对象的解构来实现。以下是代码示例:
```javascript
let arr = [
{ id: '1', value: 10 },
{ id: '1', value: 20 }
];
let result = arr.reduce((acc, cur) => {
if (!acc[cur.id]) {
acc[cur.id] = [];
}
acc[cur.id].push(cur.value);
return acc;
}, {});
console.log(result); // 输出: { id: '1', value: [10, 20] }
```
在这个例子中,`reduce()` 函数遍历数组,对于每个对象,如果它对应的 `id` 没有在累加器 `acc` 中,就创建一个新的键值对;如果已经有了,则将其 `value` 添加到已有的数组中。最终得到的结果是一个新的对象,如你所期望。
let arr={0: 3, 1: 3} 把arr变成【3】
可以使用 Object.values() 方法将对象的值转为数组,然后获取数组的第一个元素即可得到结果。具体代码如下:
```
let arr = {0: 3, 1: 3};
arr = Object.values(arr);
// arr 现在为 [3, 3]
arr = arr.slice(0, 1);
// arr 现在为 [3]
```
注意,由于对象的属性名不是连续的数字,因此它不能被直接转换为数组。我们需要使用 Object.values() 方法来获取对象的值,然后再对数组进行操作。
阅读全文