const obj = { 1: 'a', 2: 'b', 3: 'c' } const set = new Set([1, 2, 3, 4, 5]) obj.hasOwnProperty('1') obj.hasOwnProperty(1) set.has('1') set.has(1)
时间: 2023-10-28 22:04:38 浏览: 141
这段代码中,第一行创建了一个包含三个属性的对象 obj,第二行创建了一个包含五个元素的 Set 集合 set。
接下来分别对 obj 和 set 进行了 hasOwnProperty() 和 has() 方法的调用,具体如下:
- obj.hasOwnProperty('1') 返回 true,因为 obj 对象中具有名为 '1' 的属性。
- obj.hasOwnProperty(1) 返回 true,因为 obj 对象中具有名为 '1' 的属性,而 JavaScript 中数字类型的属性名会被自动转换为字符串类型。
- set.has('1') 返回 false,因为 set 集合中不存在值为 '1' 的元素。
- set.has(1) 返回 true,因为 set 集合中存在值为 1 的元素。
需要注意的是,虽然在 JavaScript 中数字类型的属性名会被自动转换为字符串类型,但是在 Set 集合中,元素的值和类型都会被保留,因此 set.has('1') 和 set.has(1) 是两个不同的方法调用,返回值也会不同。
相关问题
const obj = {a:1,b:2,c:3,a:4,a:5} 这样一组数据怎么保证是从第一个开始 能获取一组数组为[a,b,c,a,a] 且能获取到其在对象中对应的value
在 JavaScript 中,处理这种重复 key 的情况有点复杂,因为标准的 `for...in` 遍历并不能保证返回 key 的添加顺序。不过,你可以通过手动跟踪 key 和 value,以及利用 `Set` 来辅助解决这个问题。以下是一个示例:
```javascript
const obj = {a:1, b:2, c:3, a:4, a:5};
const uniqueKeys = new Set();
const result = [];
for (let key in obj) {
if (!uniqueKeys.has(key)) {
result.push({ key, value: obj[key] });
uniqueKeys.add(key);
}
}
// 将对象的值排序,这里使用简单的数字比较,如果是字符串或其他类型,需自行处理
result.sort((a, b) => a.key - b.key);
console.log(result); // 结果可能是 [{key: "a", value: 1}, {key: "b", value: 2}, {key: "c", value: 3}, {key: "a", value: 4}, {key: "a", value: 5}]
```
这段代码首先创建了一个 `Set` 用于记录已经遍历过的 key,保证了每个 key 只会出现一次。然后将首次遇到的 key 和对应的 value 添加到结果数组中,最后对结果数组按 key 排序。
如何根据column1生成dataList const column1 = [ { title: '标题1', dataIndex: 'name1', obj: { a: 1, b: 2 }, }, { title: '标题2', dataIndex: 'name2', obj: { a: 1, b: 2 }, }, { title: '标题3', dataIndex: 'name3', obj: { a: 12, b: 2 }, }, { title: '标题4', dataIndex: 'name4', obj: { a: 11, b: 2 }, }, ]; const dataList=[ { keyName: 'a', name1:1, name2:1, name3:12, name4:11 }, { keyName: 'b', name1:2, name2:2, name3:2, name4:2 } ]
可以使用一个循环来遍历 `column1`,对于每个对象,获取它的 `dataIndex` 值作为 `dataList` 中的键,然后根据这个键从 `obj` 中获取对应的值,将这个值添加到 `dataList` 中的相应位置。
代码如下:
```
const column1 = [
{
title: '标题1',
dataIndex: 'name1',
obj: { a: 1, b: 2 },
},
{
title: '标题2',
dataIndex: 'name2',
obj: { a: 1, b: 2 },
},
{
title: '标题3',
dataIndex: 'name3',
obj: { a: 12, b: 2 },
},
{
title: '标题4',
dataIndex: 'name4',
obj: { a: 11, b: 2 },
},
];
const dataList = [];
const keys = new Set();
column1.forEach((col) => {
keys.add(col.dataIndex);
});
keys.forEach((key) => {
const dataItem = {
keyName: key,
};
column1.forEach((col) => {
if (col.dataIndex === key) {
dataItem[key] = col.obj[key];
}
});
dataList.push(dataItem);
});
console.log(dataList);
```
输出结果:
```
[
{ keyName: 'name1', name1: 1, name2: 1, name3: 12, name4: 11 },
{ keyName: 'name2', name1: 1, name2: 2, name3: 2, name4: 2 },
{ keyName: 'name3', name1: 12, name2: 2, name3: 12, name4: 11 },
{ keyName: 'name4', name1: 11, name2: 2, name3: 2, name4: 11 }
]
```
阅读全文