Javascript修改代码读取修改的对象
Javascript changing code for reading modified object
我有一些代码已经工作了,但我需要改变对象结构,我需要修改代码,使其再次工作
下面是工作代码(带有原始对象数据):
obj = {
"category": [
{
"id": "1",
"category": "1",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "2",
"category": "1",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "3",
"category": "2",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "4",
"category": "2",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "5",
"category": "3",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
]
}
var results = [ ];
for (var i = 0; i < obj.category.length; i++) {
$.each( obj.category[i].tags, function( key, value ) {
results.push(value);
});
}
var uniqueNames = [];
$.each(results, function(i, el){
if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});
console.log(uniqueNames);
我现在需要将对象更改为如下结构:
obj = {
"id": "1",
"category": "1",
"tags": {
"483": "tag1",
"484": "tag2"
}
}
JSFiddle
基本上这个类别已经被去掉了
我怎么能让它工作与我的新对象结构?
注意:代码应该获得所有可用的标签名称,然后删除重复的,最后将结果添加到数组
https://jsfiddle.net/qte5oa9g/8/
$(document).ready(function() {
objArr = [
{
"id": "1",
"category": "1",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "2",
"category": "1",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "3",
"category": "2",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "4",
"category": "2",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
{
"id": "5",
"category": "3",
"tags": {
"483": "tag1",
"484": "tag2"
}
},
];
var results = [];
for (var i = 0; i < objArr.length; i++) {
$.each( objArr, function( key, value ) {
(value.tags) ? results.push(value) : false;
});
console.log(results);
}
var uniqueNames = [];
$.each(results, function(i, el){
if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});
console.log(uniqueNames);
}); //onready end
好吧。首先,也许你有一些原因,但如果你要保存一个对象列表,我觉得你应该有一个像"类别"这样的容器,或者把它们存储在数组中。
在我的例子中,我将对象更改为对象数组。
从那里你只需要检查数组。长度,并设置你要检查的索引到对象数组,而不是像你那样检查内部对象。
有一个特定的对象用来收集唯一的值,叫做Set()。它几乎使你的uniqueNames的东西无用,所以我完全删除了它,只是调用结果作为Set()并记录它。
您只需使用.add(value)方法而不是推入一个集合。我在下面列出了它和数组的参考。
如果你有任何问题,请尽管提。
引用:
MDN: Array.prototype
MDN: Set Prototype Add Method
MDN: JavaScript Objects
相关文章:
- 使用AngularJS修改对象位置只需一次
- Reactjs:在修改对象之前,是否需要复制处于组件状态的对象
- 修改对象的原型不起作用
- 在 Javascript 中修改对象
- 通过Web服务修改对象列表,如何获取最终值列表
- 修改对象属性的方法中的 JavaScript 变量
- 在PouchDB/Barket.js中推送promise数组之前修改对象的值
- 就地修改对象javascript
- Backbone JS事件函数修改对象
- Javascript:从指针修改对象
- 使用Undercore在另一个对象内部修改对象内部的数组
- 修改对象's键而不创建新对象
- 在发布文档之前,如何在find()中修改对象级别的文档
- 在加载对象DOM之前修改对象DOM
- JS取回JSON解析是修改对象
- 继承和修改对象
- 在javascript中修改对象中的节点
- 修改对象存储的主键值
- 如何在修改对象后更新html中的数据
- Parse.com云功能-在发送到客户端之前手动修改对象字段