filter 和findIndex 怎么搭配一起使用
时间: 2023-07-28 22:23:10 浏览: 289
filter 和 findIndex 都是 JavaScript 中的数组方法,可以搭配使用来筛选和查找数组中的元素。
filter 方法可以根据给定的条件筛选出数组中符合条件的元素,返回一个新的数组。而 findIndex 方法可以查找数组中第一个符合给定条件的元素的索引值,如果没有找到则返回 -1。
可以使用 filter 方法筛选出符合条件的元素后,再使用 findIndex 方法查找其在原数组中的索引值。例如:
```javascript
const arr = [
{ id: 1, name: 'apple' },
{ id: 2, name: 'banana' },
{ id: 3, name: 'orange' },
];
const index = arr
.filter((item) => item.name === 'banana')
.findIndex((item) => item.id === 2);
console.log(index); // 0
```
在上面的例子中,首先使用 filter 方法筛选出 name 属性为 'banana' 的元素,得到一个新的数组。然后在这个新数组中使用 findIndex 方法查找 id 属性为 2 的元素的索引值,得到 0。
需要注意的是,如果 filter 方法筛选出的新数组为空,那么使用 findIndex 方法将返回 -1。因此,在使用 findIndex 方法之前,最好先判断一下筛选出的新数组是否为空。
相关问题
uniapp ts find 返回索引
在uni-app的TypeScript版本中,当你使用数组的`find()`方法时,它会返回满足提供的测试函数的第一个元素的索引。这个方法并不直接返回索引,而是返回第一个匹配项的引用或者`undefined`如果找不到匹配项。
例如:
```typescript
const array = ['apple', 'banana', 'cherry'];
let index = array.findIndex(item => item === 'banana'); // 如果找到'banana',index将是1
// 如果没有找到匹配项,如array.findIndex(item => item === 'grape'),index将为-1
```
如果你需要获取所有匹配项的索引,可以结合`Array.prototype.map()`一起使用:
```typescript
const indexes = array.findIndex(item => array.includes(item)); // 返回第一个匹配项的索引,如果没有则返回undefined
const allIndexes = array.filter(item => array.includes(item)).map((item, i) => i); // 获取所有匹配项的索引
```
python获取pdf内容文字,只存储名字和身份证号到表格
Python中可以使用第三方库如`PyPDF2`来读取PDF文件的内容,然后使用正则表达式筛选出姓名和身份证号码这类特定的信息。以下是简单的步骤:
1. 首先,安装必要的库:
```bash
pip install PyPDF2 pandas regex
```
2. 使用`PyPDF2`打开PDF文件并提取文本:
```python
import PyPDF2
import io
def extract_text_from_pdf(pdf_path):
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfFileReader(file)
text = ""
for page_num in range(reader.numPages):
text += reader.getPage(page_num).extractText()
return text
```
3. 使用正则表达式匹配姓名和身份证号:
```python
import re
def filter_info(text):
name_regex = r"(\b[姓名]\b[^0-9]+)"
id_regex = r"\b([1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)(\d{3})[xX]?\d{4}\b)"
names = re.findall(name_regex, text, re.IGNORECASE)
ids = re.findall(id_regex, text, re.IGNORECASE)
# 结果是一个包含姓名和身份证的列表
return {"names": names, "ids": ids}
```
4. 将结果保存到CSV或Excel表格中(假设已导入pandas库):
```python
def save_to_excel(filtered_data, output_file):
data = {
"Names": filtered_data["names"],
"ID Numbers": filtered_data["ids"]
}
df = pd.DataFrame(data)
df.to_csv(output_file, index=False)
```
将上述函数结合在一起,你可以遍历PDF文件中的所有页面并提取信息:
```python
pdf_path = "example.pdf"
output_file = "filtered_data.csv"
text = extract_text_from_pdf(pdf_path)
filtered_data = filter_info(text)
save_to_excel(filtered_data, output_file)
```
阅读全文