创建新属性后的 JSON 空属性
json null property after creating new property
jsonArr = [
{
"val": "0"
},
{
"val": "1"
},
{
"val": "2"
},
{
"val": "2"
},
{
"val": "2"
},
{
"val": "0"
},
{
"val": "0"
},
{
"val": "4"
}
];
var val = {};
for (var i = 0; i < jsonArr.length; i++) {
if (val.hasOwnProperty(jsonArr[i].val)) { // if the property exists
val[jsonArr[i].val] = 1; // create new property
} else {
val[jsonArr[i].val] ++; // increase
}
}
console.log(JSON.stringify(val));
Console.log
吐出{"0":1,"1":null,"2":1,"4":null}
,我= 1
声明时看不到空是从哪里来的?此外,您还可以看到它没有像其他方式那样增加。
如果
jsonArr[i].val
不存在,则需要将属性设置为 1
:
var val = {};
for (var i = 0; i < jsonArr.length; i++) {
if (!val.hasOwnProperty(jsonArr[i].val)) {
val[jsonArr[i].val] = 1;
} else {
val[jsonArr[i].val]++;
}
}
您尚未为 val[jsonArr[i].val] ++;
设置值 相反,您正在尝试递增它。
起初,当该值不存在时,必须将其设置为 1。
for (var i = 0; i < jsonArr.length; i++) {
val[jsonArr[i].val] = val[jsonArr[i].val] ? val[jsonArr[i].val]++ : 1;
}
我使用了一个三元运算符来检查对象中属性val
值。如果它不存在,则将其设置为 1,否则递增其值。
如果您正在考虑性能:
for (var i = 0; i < jsonArr.length; i++) {
var value = jsonArr[i].val; // this will avoid some lookup
val[value] = val[value] ? val[value]++ : 1;
}
相关文章:
- 如何向JSON数组动态添加属性
- 创建新属性后的 JSON 空属性
- 使用XPath样式访问Javascript JSON对象属性
- 在不使用lodash-get的情况下从json中提取深层属性
- json-api和错误结果:无法读取属性'长度'的未定义
- 无法使用ng repeat检索动态创建的JSON对象的属性
- 使用json数据更改视频标签中的src属性
- 只将JSON中的属性加载到现有的javascript对象中,而不破坏方法
- 访问嵌套 json 对象的属性将返回未定义
- JSON.parse:应为''或'}'在对象的属性值之后
- 正在打印JSON属性
- 无法将 json 数据添加到 pyjade 中的数据属性
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串
- 如何将返回一串数字的 JSON 属性转换为日期
- Gmaps4rails:如何向 json 添加属性
- 向 JSON 对象属性添加引号
- 将地理 JSON 要素属性添加到地图框弹出窗口
- 如何在 JSF 中将 JS 函数作为 JSON 属性传递给前端
- 当图像和链接是 json 对象属性的值时,它们不起作用