let arr = [{fileName: '短信-附件'},{fileName: '海报-附件'} ] let list = ['短信', 'PPT'] // 判断数组arr是否满足list数组的所有成员,有几种方法请列出
时间: 2024-10-16 14:15:03 浏览: 26
要判断数组`arr`中的对象是否包含`list`数组中的所有文件名作为某个属性(这里假设是`fileName`),可以使用以下几种方法:
1. **使用Array.prototype.every()**: 这个方法会检查数组里的每个元素是否都满足提供的测试函数。如果满足,则返回true,否则返回false。
```javascript
function checkIfAllExist(arr, list) {
return arr.every(item => list.includes(item.fileName));
}
let arr = [{ fileName: '短信-附件' }, { fileName: '海报-附件' }];
let list = ['短信', 'PPT'];
console.log(checkIfAllExist(arr, list)); // 输出:false
```
2. **使用for循环和indexOf()**:
```javascript
function checkIfAllExist2(arr, list) {
for (let i = 0; i < arr.length; i++) {
if (!list.includes(arr[i].fileName)) {
return false;
}
}
return true;
}
console.log(checkIfAllExist2(arr, list)); // 输出:false
```
3. **使用Set数据结构**:
```javascript
function checkIfAllExist3(arr, list) {
const setList = new Set(list);
return arr.every(item => setList.has(item.fileName));
}
console.log(checkIfAllExist3(arr, list)); // 输出:false
```
在这三种情况下,`arr`都不满足`list`的要求,因为第一个对象只有“短信-附件”,而没有“PPT”。所以,结果都是`false`。
阅读全文