Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中复制哈希_Javascript_Hash - Fatal编程技术网

在Javascript中复制哈希

在Javascript中复制哈希,javascript,hash,Javascript,Hash,我有一个非常简单的javascript散列(只包含属性的对象): 我想复制整个散列,然后修改它: var new_color = original_color; new_color.r = 50; javascript是否有复制字典的内置方式?或者我应该使用其他JS数据类型来处理哈希/字典吗 关于克隆对象,有一个相关的问题:。但我感到惊讶的是,没有简单的方法来复制散列,或者本质上是一个只有属性而没有方法、原型等的对象。好吧,这可以做到这一点,但它并不优雅,只是在您之前引用的答案上的精简版本 v

我有一个非常简单的javascript散列(只包含属性的对象):

我想复制整个散列,然后修改它:

var new_color = original_color;
new_color.r = 50;
javascript是否有复制字典的内置方式?或者我应该使用其他JS数据类型来处理哈希/字典吗


关于克隆对象,有一个相关的问题:。但我感到惊讶的是,没有简单的方法来复制散列,或者本质上是一个只有属性而没有方法、原型等的对象。

好吧,这可以做到这一点,但它并不优雅,只是在您之前引用的答案上的精简版本

var original_color = {
r: 214,
g: 124,
b: 55
};   
var new_color ={};    
for (prop in original_color){
  if (original_color.hasOwnProperty(prop)){
    new_color[prop] = original_color[prop];
 }
}
new_color.r = 50;

您可以使用Object.assign

var原始颜色={
r:214,
g:124,
b:55
};   

var new_color=Object.assign({},original_color)
如果您有对象子对象,请使用extend()、Object.create()或JSON三明治。不,语言中没有实现这一点的基本机制。该答案中的克隆答案就是您要做的。js中的对象和散列之间没有区别。您需要迭代对象A并将它们添加到对象B中。在JavaScript中,我们不称它们为“哈希”。这是一个简单明了的对象。我看不出你认为它除了属性之外还能包含什么。因此,我不明白为什么您链接到的现有解决方案对您来说不够好?
var original_color = {
r: 214,
g: 124,
b: 55
};   
var new_color ={};    
for (prop in original_color){
  if (original_color.hasOwnProperty(prop)){
    new_color[prop] = original_color[prop];
 }
}
new_color.r = 50;