使用变量作为名称,将属性添加到JavaScript对象中?
我正在使用jQuery将项目从DOM中拉出,并希望使用DOM元素的ID
在对象上设置属性。
示例
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// Here is the problem
obj.name = value
})
如果from tromdom
包括一个元素,上面有id
“ myid”,我希望obj
具有名为“ myid”的属性。以上给我name
。
如何使用JavaScript使用变量命名对象的属性?
I'm pulling items out of the DOM with jQuery and want to set a property on an object using the id
of the DOM element.
Example
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// Here is the problem
obj.name = value
})
If itemsFromDom
includes an element with an id
of "myId", I want obj
to have a property named "myId". The above gives me name
.
How do I name a property of an object using a variable using JavaScript?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
您可以使用此等效语法:
示例:
使用ES6功能:
在两个示例中,
console.log(obj)
将返回:{the_key:'the_value'''the_value' }
You can use this equivalent syntax:
Example:
or with ES6 features:
in both examples,
console.log(obj)
will return:{ the_key: 'the_value' }
注释在对象声明中直接执行此操作:
使用 ecmascript 2015 您可以使用括号 >键可以是返回值的任何形式的表达式(例如变量):
With ECMAScript 2015 you can do it directly in object declaration using bracket notation:
Where
key
can be any sort of expression (e.g. a variable) returning a value:您甚至可以列出这样的对象列表
You can even make List of objects like this
有两种不同
dot符号快速且容易,但是您必须明确使用实际属性名称。没有替换,变量等
。它使用字符串,但您可以使用任何法律JS代码生成字符串。您可以将字符串指定为文字(尽管在这种情况下,点符号将读取更容易)或以某种方式使用变量或计算。
因此,所有这些都将 myobj 属性属于 prop1 的 hello> hello :
陷阱:
tl; dnr :如果您要计算或引用您必须使用支架符号的键。如果您要明确使用密钥,请使用 dot note 进行简单的清除代码。
注意:还有其他一些好的和正确的答案,但我个人发现它们有点简短,这是对JS在正式怪异的熟悉程度较低的情况。这对某些人可能很有用。
There are two different notations to access object properties
Dot notation is fast and easy but you must use the actual property name explicitly. No substitution, variables, etc.
Bracket notation is open ended. It uses a string but you can produce the string using any legal js code. You may specify the string as literal (though in this case dot notation would read easier) or use a variable or calculate in some way.
So, these all set the myObj property named prop1 to the value Hello:
Pitfalls:
tl;dnr: If you want to compute or reference the key you must use bracket notation. If you are using the key explicitly, then use dot notation for simple clear code.
Note: there are some other good and correct answers but I personally found them a bit brief coming from a low familiarity with JS on-the-fly quirkiness. This might be useful to some people.
使用Lodash,您可以创建像这样的新
对象这样:
如果要在路径中使用dot(“。”),应该小心,因为lodash可以设置层次结构:
With lodash, you can create new object like this _.set:
Or you can set to existing object like this:
You should take care if you want to use dot (".") in your path, because lodash can set hierarchy, for example:
首先,我们需要将密钥定义为变量,然后我们需要将键分配为键作为对象。
First we need to define key as variable and then we need to assign as key as object., for example
与主题有关,而不是专门针对jQuery。我在EC6 React项目中使用了这一点,也许可以帮助某人:
PS:请注意引用角色。
Related to the subject, not specifically for jquery though. I used this in ec6 react projects, maybe helps someone:
PS: Please mind the quote character.
如果要动态地将字段添加到对象,最简单的方法如下:
If you want to add fields to an object dynamically, simplest way to do it is as follows:
随着ES2015 计算属性名称 OP的代码归结为:
With the advent of ES2015 Object.assign and computed property names the OP's code boils down to:
AjavaScript有两种用于获取JavaScript对象属性的注释:
obj = {};
1)(。)注释obj.id
仅当对象已经具有名称“ ID” 2)([])注释(例如)的属性时才能起作用
。 OBJ [ID]在此处,如果对象没有任何名称'ID'的属性,则将创建一个带有名称“ ID”的新属性。
因此,对于以下示例:
编写OBJ [name]时,将始终创建一个新属性。
如果该属性已经以相同的名称存在,则它将覆盖它。
ajavascript have two type of annotation for fetching javascript Object properties:
Obj = {};
1) (.) annotation eg. Obj.id
this will only work if the object already have a property with name 'id'
2) ([]) annotation eg . Obj[id] here if the object does not have any property with name 'id',it will create a new property with name 'id'.
so for below example:
A new property will be created always when you write Obj[name].
And if the property already exist with the same name it will override it.
如果您有对象,则可以制作钥匙数组,而不是映射,并从以前的对象键和值创建新对象。
If you have object, you can make array of keys, than map through, and create new object from previous object keys, and values.
ObjectName.NewProperty = value;
objectname.newProperty = value;