js查找数组中相同名字的
时间: 2023-02-21 09:01:43 浏览: 75
可以使用 JavaScript 的 Array.prototype.filter() 和 Array.prototype.map() 方法来查找数组中相同的名字。
以下是一个示例代码:
```
let people = [
{ name: "John", age: 20 },
{ name: "Jane", age: 22 },
{ name: "Jim", age: 24 },
{ name: "John", age: 26 }
];
let names = people.map(person => person.name);
let duplicateNames = names.filter((name, index) => names.indexOf(name) !== index);
console.log(duplicateNames);
```
这个代码会输出:
```
[ "John" ]
```
表示数组中有一个重复的名字,就是 "John"。
相关问题
js查找数组中相同元素的下标
可以使用 JavaScript 的 indexOf 和 lastIndexOf 方法来查找数组中相同元素的下标。具体方法如下:
1. 首先遍历数组中的每个元素,利用 indexOf 方法查找该元素在数组中第一次出现的位置。
2. 如果该元素在数组中出现了多次,那么利用 lastIndexOf 方法查找该元素在数组中最后一次出现的位置。
3. 将找到的位置存入一个新的数组中,最后返回该数组即可。
下面是一个示例代码:
```javascript
function findSameIndex(arr) {
var indexArr = [];
for (var i = 0; i < arr.length; i++) {
var firstIndex = arr.indexOf(arr[i]); // 查找第一次出现的位置
var lastIndex = arr.lastIndexOf(arr[i]); // 查找最后一次出现的位置
if (firstIndex !== lastIndex && indexArr.indexOf(firstIndex) === -1) { // 判断是否是重复元素并且未添加到结果数组中
indexArr.push(firstIndex);
}
}
return indexArr;
}
// 示例
var arr = [1, 2, 3, 4, 5, 2, 6, 7, 3];
console.log(findSameIndex(arr)); // [1, 6, 8]
```
上述代码中,findSameIndex 函数接收一个数组参数 arr,返回一个包含相同元素下标的数组 indexArr。该函数首先利用 indexOf 方法查找数组中每个元素第一次出现的位置,然后利用 lastIndexOf 方法查找该元素最后一次出现的位置。最后判断该元素是否是重复元素并且未添加到结果数组中,如果是则将第一次出现的位置添加到结果数组中。
js 查找数组中不相同的值
可以通过两次循环遍历数组,比较每个元素是否与其他元素相同,来找出不相同的值。但是这种方法的时间复杂度为 O(n^2),当数组很大时效率较低。
更高效的方法是使用对象来记录每个元素出现的次数,然后再遍历一次数组,找出只出现过一次的元素。具体实现如下:
```javascript
function findUnique(arr) {
let obj = {};
// 统计每个元素出现的次数
for (let i = 0; i < arr.length; i++) {
if (obj[arr[i]]) {
obj[arr[i]]++;
} else {
obj[arr[i]] = 1;
}
}
// 找出只出现过一次的元素
let res = [];
for (let key in obj) {
if (obj[key] === 1) {
res.push(Number(key));
}
}
return res;
}
```
这个方法的时间复杂度为 O(n),比两次循环的方法效率高很多。
阅读全文