在一个对象的Javascript数组中,如果一个特定的数组元素本身就是一个对象数组,我如何通过名称/ID来定位该元素
In a Javascript array of objects, how can I target a specific array element by name/ID if that element is an array of objects itself?
如果我将动态创建的对象(包括另一个内部对象数组)推到一个数组中,如何仅将对象添加到特定对象的数组中。使用评论例如:
reviews.push({ 'reviewer' : 'John',
'review' : 'This movie was the greatest',
'comments' : { 'commenter' : 'Dave',
'comment' : 'The review by John was too short'}
});
"comments"是对象的内部数组。
如果在以后的阶段,我只想通过父对象的名称/ID将对象添加到特定对象的"注释"中,这可能吗?如果是这样的话,我该怎么做呢?
举个例子,如果只有一篇评论有多条评论,而评论是在稍后的阶段出现的,我如何将新评论添加到评论对象中的"评论"数组中?
我猜我需要一个审查ID来阻止重复等,但除此之外,我甚至不确定如何在语法上做到这一点,或者这是否可能。
提前谢谢。
首先,注释应该是一个数组,并且您有一个对象。
然后这样进行:
reviews[someIndex].comments.push( { commenter: 'john', comment: 'hello!!'});
即
如果你需要在第一篇文章中添加评论,请执行:
reviews[0].comments.push( { /* your comment */ } );
EDIT:我一直使用get()来检索索引,但我似乎找不到太多关于它的文档,所以我假设(尽管我不确定)[I]是一种更标准的做事方式,因此我更改了这个例子。然而,发表评论的概念并没有改变。
EDIT 2:OP希望以数组中的特定元素为目标。我会使用这里描述的Array.prototype.indexOf,在那里你可以找到一个不支持indexOf的浏览器的解决方案。
如果你想跟踪id的评论和评论,我会做一些类似的事情:
var reviews = {};
review_id = "#1234";
reviews[review_id] = {
"reviewer": "John",
"review": "This movie was the bestest",
"comments": {
"#456": {
"commenter": "HAL 9000",
"comment": "I'm afraid I can't let you do that Dave"
}
}
};
添加评论:
reviews[review_id].comments[comment_id] = { /* .. */ };
for(var i=0;i<reviews.length;i++){
if(reviews[i]["reviewer"]=="John"){
var count=Object.keys(reviews[i].comments).length/2;
reviews[i].comments["commenter"+(count+1)]="another commenter";
reviews[i].comments["comment"+(count+1)]="some other comment";
console.log(count);
}
}
输出
评论者"Dave"
评论"John的评论太短"
评论者2"另一个评论者"
注释2"其他一些评论"
http://jsfiddle.net/gkxcj/
相关文章:
- JS数组-检查对象值是否重复
- 将单独的数组深层键转换为所需的类型(数组或对象)
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- 如何在javascript上向数组的对象添加新元素
- Javascript:创建一个随机数学方程数组作为对象,20次
- 为什么JavaScript的getElementsByClassName提供了一个不是数组的对象
- 为什么我可以在一个不是数组的对象上调用 Array.prototype.filter()
- 为什么数组和对象([ ] + {})的求和是javascript中的一个字符串
- 如何在Angular中检查数组中对象列表的至少一个值是否为true
- 将数组复制到“;这个“;变量(创建一个类似数组的对象)
- 如何按顺序(而不是索引)迭代一个类似数组的对象
- 使用下划线更改数组中对象的一个属性
- 如何根据一个属性和另一个给出所需顺序的数组对对象数组进行排序
- 数组的对象有另一个键,值在另一个对象
- angular 2-如何迭代JSON响应,该响应包含一个包含对象数组的对象
- javascript数组和对象是否有一个固定的顺序
- 使用另一个对象数组筛选对象数组
- JS Lodash:多维数组到对象,有一个扭曲
- 使用另一个属性值更改数组中对象的属性值
- 通过另一个整数数组筛选对象数组