javascript - 遍历对象元素javascript
问题描述
我试图理解这一点:
function keyValue(array) {
var modeObj = {};
var i=0;
// create modeObj
array.forEach(function(num){
if (!modeObj[num]) {
modeObj[num] = 0;
}
modeObj[num]++;
console.log("1 list object keys "+Object.keys(modeObj));
console.log("2 list object value "+Object.values(modeObj));
i++;
console.log("3 iteration num "+i);
});
}
遍历数组 [1,4,5,4,6,1] 时,结果如下:
1 list object keys 1
2 list object value 1
3 iteration num 1
1 list object keys 1,4
2 list object value 1,1
3 iteration num 2
1 list object keys 1,4,52 list object value 1,1,1
3 iteration num 31 list object keys 1,4,5
2 list object value 1,2,1
3 iteration num 4
1 list object keys 1,4,5,62 list object value 1,2,1,1
3 iteration num 5
1 list object keys 1,4,5,6
2 list object value 2,2,1,1
3 iteration num 6
如果在文献中发现“Object.keys 方法用于返回简单数组的可枚举属性”。从数组 [1,4,5,4,6,1] 中可以清楚地看出,键 1 和键 4 在数组中出现了两次。如果我们检查所有对应键的值,我们可以看到键值表示部分键的出现次数。键 [1,4,5,6],值 - 2,2,1,1。
在第一行中,声明了新对象,然后通过数组进行迭代,该数组被发送到函数“keyValue()”。数组 [1,4,5,4,6,1]。
通过表达式“var modeObj = {};” 只声明了空对象。
if(!modObj[element]) 检查迭代中对象的键(元素)是否未定义或具有某些值。如果键不存在,则值 0 将作为值添加到迭代中的当前键。稍后,它将通过表达式“modeObj[num]++;”将其更改为值 1;
我不确定的是我对表达式modObj[element]++; 的解释;我相信它可以分为两个阶段来解释:
第一步:modObj[element]= modObj[element] ,
第二步:然后modObj[element]=modObj[element]+1
这意味着modObj[element]将增加特定键的值,如果键是唯一的,将仅添加 1 表示该键的多次出现,如果这是第二次或任何其他出现的键将将现有的出现次数加 1。
那是对的吗?
解决方案
只需在浏览器的开发人员工具中尝试此代码即可。
将modeObj[num]++
创建一个 KVPnum
作为键和NaN
(因为那里没有数字可以增加......如果键 DID 存在并以有效数字作为其值,那么该数字将增加 1)作为值。
所以modeObj[1]
导致modeObj
:{1: NaN}
推荐阅读
- android - 领域链接对象返回 null
- html - 当我悬停链接或图标时,Div 不显示
- spring-boot - Apache Shiro 正在破坏我的 Spring Boot RestAPI 的 CORS 配置
- elasticsearch - 带空格词的 Elasticsearch 大小写不敏感通配符搜索
- javascript - 为什么来自 Firebase 的数据没有呈现在我的 FlatList (React Native) 中?
- javascript - 模糊字符串搜索但对象?
- nginx - Nginx 仅在从特定 IP 访问时提供错误的证书和站点
- design-patterns - 在装饰器模式中,您如何确保最低级别的元素不是装饰器?
- esp8266 - ESP8266 Micropython: [Errno 103] ECONNABORTED\r\n') 一段时间后
- powershell - powershell 将 viso 容器设置为自动调整内容