js es6语法 遍历对象
时间: 2023-04-06 11:02:06 浏览: 153
可以使用 for...in 循环遍历对象的属性,也可以使用 Object.keys() 方法获取对象的属性名数组,再使用 forEach() 或 for...of 循环遍历属性名数组,获取属性值。还可以使用 Object.entries() 方法获取对象的键值对数组,再使用 forEach() 或 for...of 循环遍历键值对数组,获取属性名和属性值。
相关问题
用es6语法,写一个深拷贝
使用 ES6 语法可以使用扩展运算符和递归的方式来实现深拷贝:
```javascript
const deepClone = obj => {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const clone = Array.isArray(obj) ? [] : {};
for (let prop in obj) {
if (obj.hasOwnProperty(prop)) {
clone[prop] = deepClone(obj[prop]);
}
}
return clone;
};
```
这个实现中,我们首先检查传递给函数的参数是否为 null 或不是一个对象。如果是这种情况,则我们简单地返回该值。
然后,我们使用 Array.isArray() 方法检查对象是否为数组。如果是,则我们创建一个空数组作为克隆对象,否则我们创建一个空对象。
最后,我们使用 for...in 循环遍历原始对象的属性,并递归地调用 deepClone() 函数来克隆每个属性。在每个迭代中,我们使用 hasOwnProperty() 方法检查属性是否为对象本身的属性,以避免不必要的克隆。
由于递归地调用 deepClone() 函数会创建一个新的克隆对象,因此我们最终返回克隆对象。
AB两个数组对象,两个对象中有oid和typeid属性,如果B的oid和typeid和A中的有相同的则将A中这个对象去除用ES6语法
可以使用 `filter()` 方法和箭头函数来实现删除操作,具体代码如下:
```javascript
A = A.filter(a => !B.some(b => b.oid === a.oid && b.typeid === a.typeid));
```
这里使用了 `filter()` 方法来过滤掉 A 中满足某个条件的元素。条件的判断使用了 `some()` 方法和箭头函数,`some()` 方法用于判断数组中是否存在满足某个条件的元素,这里的条件就是 B 中存在一个对象的 oid 和 typeid 属性与 A 中当前元素相同。`!` 符号用于取反,即得到 B 中不存在与 A 中当前元素 oid 和 typeid 相同的元素。
注意,这种方法会返回一个新的数组,而不是修改原来的 A 数组。如果要修改原来的 A 数组,可以使用 `splice()` 方法和 `forEach()` 循环来实现,具体代码如下:
```javascript
B.forEach(b => {
A.forEach((a, i) => {
if (a.oid === b.oid && a.typeid === b.typeid) {
A.splice(i, 1);
}
});
});
```
这里使用了两个 `forEach()` 循环来遍历 A 和 B 数组,如果 B 中存在一个对象的 oid 和 typeid 属性与 A 中当前元素相同,则使用 `splice()` 方法将该元素从 A 数组中删除。注意,这个方法会修改原来的 A 数组。
阅读全文