js 2个数组筛选
时间: 2023-12-03 09:02:43 浏览: 26
可以使用JavaScript的`filter()`方法对两个数组进行筛选。
假设有两个数组:`arr1`和`arr2`,我们需要筛选出在`arr1`中出现过,并且在`arr2`中也出现过的元素。可以使用以下代码实现:
```javascript
var arr1 = [1, 2, 3, 4, 5];
var arr2 = [3, 4, 5, 6, 7];
// 使用filter方法筛选出同时在arr1和arr2中出现的元素
var result = arr1.filter(function(item) {
return arr2.indexOf(item) !== -1;
});
console.log(result); // [3, 4, 5]
```
上面的代码中,使用`filter()`方法遍历`arr1`数组,对于每个元素,使用`indexOf()`方法在`arr2`中查找是否存在该元素,如果存在则返回`true`,否则返回`false`。最终返回一个新的数组,其中包含所有在`arr1`和`arr2`中都存在的元素。
相关问题
vue.js 对象数组筛选根节点
如果你有一个对象数组,每个对象都有一个 parent_id 字段表示其父节点的 ID,你想筛选出根节点(即 parent_id 为 null 或 undefined 的节点),可以使用 Array.filter() 方法和箭头函数来实现。
比如,假设你有一个对象数组如下:
```javascript
const data = [
{ id: 1, parent_id: null, name: 'Root' },
{ id: 2, parent_id: 1, name: 'Child 1' },
{ id: 3, parent_id: 1, name: 'Child 2' },
{ id: 4, parent_id: 2, name: 'Grandchild 1' },
{ id: 5, parent_id: 3, name: 'Grandchild 2' },
{ id: 6, parent_id: 4, name: 'Great-grandchild' },
];
```
你可以这样筛选出根节点:
```javascript
const rootNodes = data.filter(node => node.parent_id == null);
```
这会返回一个数组,包含所有根节点。
如果你想在 Vue.js 中使用这个筛选器,可以将其放在计算属性中:
```javascript
computed: {
rootNodes() {
return this.data.filter(node => node.parent_id == null);
}
}
```
然后在模板中使用它:
```html
<ul>
<li v-for="node in rootNodes" :key="node.id">
{{ node.name }}
<!-- 子节点的渲染逻辑 -->
</li>
</ul>
```
这样就可以渲染出所有根节点及其子孙节点了。
js怎么从一个数组中筛选另一个数组
A:可以使用`filter()`方法实现从一个数组中筛选另一个数组。
假设有两个数组`arr1`和`arr2`,需要从`arr1`中筛选出在`arr2`中出现过的元素,可以使用以下代码实现:
```javascript
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 4, 6];
const result = arr1.filter(item => arr2.includes(item));
console.log(result); // 输出 [2, 4]
```
以上代码中,`filter()`方法用于筛选出在`arr2`中出现过的元素,`includes()`方法用于判断元素是否在`arr2`中出现过。最终返回的是一个新数组,包含了在`arr2`中出现过的元素。