Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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 如何使用angular js中的键扩展对象?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何使用angular js中的键扩展对象?

Javascript 如何使用angular js中的键扩展对象?,javascript,angularjs,Javascript,Angularjs,myObj是一个包含一些参数的对象 myObj: { person: "John", age: "20" }; 现在,我需要创建一个与原始对象类似的新对象(仅对值进行轻微更改),类似于 newObj: { person: "John" + GetVal(); age: "20" + GetVal(); }; 我试过这样的方法: var newObj = {}; angular.forEach(myObj,

myObj
是一个包含一些参数的对象

myObj:
    {
     person: "John", 
     age: "20"
    };
现在,我需要创建一个与原始对象类似的新对象(仅对值进行轻微更改),类似于

newObj:
    {
     person: "John" + GetVal();
     age: "20" + GetVal();
    };
我试过这样的方法:

var newObj = {};
angular.forEach(myObj,
                    function (value, key) {
                        _.extend(newObj, { key: value + GetVal() });
                    });
但这会产生类似的结果

newObj:
{
  key: "John" + GetVal();
}
但我在等一件东西

newObj:
{
  person: "John" + GetVal();
}
请注意,
被视为这样,但它应该是原始对象的
参数名


有什么想法可以实现吗?

你可以使用
对象键。请试试这个:

var myObj={
人物:“约翰”,
年龄:“20”
};
var newObj={};
angular.forEach(对象.键(myObj)),函数(值,键){
newObj[value]=myObj[value]+'someValue';
});
console.log(newObj)

您可以使用
对象.key
。请试试这个:

var myObj={
人物:“约翰”,
年龄:“20”
};
var newObj={};
angular.forEach(对象.键(myObj)),函数(值,键){
newObj[value]=myObj[value]+'someValue';
});
console.log(newObj)

您可以像这样尝试
Object.assign()

var myObj={
人物:“约翰”,
年龄:“20”
};
函数GetVal(val){
返回val;
}
myObj=Object.assign({},myObj{
person:myObj.person+GetVal(“姓氏”),
年龄:myObj.age+GetVal(“岁”)
});

console.log(myObj)
您可以像这样尝试
Object.assign()

var myObj={
人物:“约翰”,
年龄:“20”
};
函数GetVal(val){
返回val;
}
myObj=Object.assign({},myObj{
person:myObj.person+GetVal(“姓氏”),
年龄:myObj.age+GetVal(“岁”)
});

console.log(myObj)
问题是
被视为一个普通的表达式,而不是一个表达式,您必须在解决方案中使用
[key]
,以使其正常工作

var myObj={
人物:“约翰”,
年龄:20
};
常量GetVal=()=>3;
var newObj={};
棱角的。forEach(myObj,
功能(值、键){
_.extend(newObj,{[key]:value+GetVal()});
});
console.log(newObj)

问题是
被视为一个普通的表达式,而不是一个表达式,您必须在解决方案中使用
[key]

var myObj={
人物:“约翰”,
年龄:20
};
常量GetVal=()=>3;
var newObj={};
棱角的。forEach(myObj,
功能(值、键){
_.extend(newObj,{[key]:value+GetVal()});
});
console.log(newObj)



您的意思是
newObj[key]=myObj[value]+GetVal()
?否,Object.keys返回一个数组,其中的项是对象键名称,您需要这些值,因此它应该是
value
。如果您在这种情况下使用
,它将为您提供数组索引(0,1..)很好的答案。谢谢你的详细解释。理解,尝试,工作得很好:)幸福…有疑问。使用
.extend
和简单地使用
newObj[value]=oldObj[value]
有什么区别。如果一个属性不存在,这两个属性似乎都会创建一个名为
value
的新属性。
.extend
是“下划线”库方法,它将源对象中的所有属性简单地复制到目标对象上(有关详细信息,请查看下划线文档:下划线js.org/#extend)。因此,如果您希望在不进行修改的情况下复制整个对象,这将非常有用。在您的例子中,不需要使用它,因为您使用
forEach
逐个循环对象属性,并使用它们来构建新对象。您不需要复制对象,而是基于另一个对象属性创建新对象,并且不需要任何库来在JS中添加对象属性:)您的意思是
newObj[key]=myObj[value]+GetVal()
?不,object.keys返回一个数组,其中的项是对象键名称,您需要这些值,因此它应该是
value
。如果您在这种情况下使用
,它将为您提供数组索引(0,1..)很好的答案。谢谢你的详细解释。理解,尝试,工作得很好:)幸福…有疑问。使用
.extend
和简单地使用
newObj[value]=oldObj[value]
有什么区别。如果一个属性不存在,这两个属性似乎都会创建一个名为
value
的新属性。
.extend
是“下划线”库方法,它将源对象中的所有属性简单地复制到目标对象上(有关详细信息,请查看下划线文档:下划线js.org/#extend)。因此,如果您希望在不进行修改的情况下复制整个对象,这将非常有用。在您的例子中,不需要使用它,因为您使用
forEach
逐个循环对象属性,并使用它们来构建新对象。您不需要复制对象,而是基于另一个对象属性创建新对象,并且不需要任何库来在JS中添加对象属性:)为什么不直接执行
newObj.person=“John”+GetVal()?我不知道
myObj
的确切属性名称。它可能是任何东西。我想要的是一个相似的对象,每个属性的值都被修改?我不知道
myObj
的确切属性名称。它可能是任何东西。我想要的是一个相似的对象,每个属性的值都被修改。问题是我不知道
myObj
的属性名。它可能是任何东西。因此,您不能像上面那样对
人:
年龄
进行硬编码。很抱歉,我没有看到您的问题中提到了动态键名。一定要使用Object.keys()来获取这些密钥。另一方面,angular.forEach的性能远不如简单的for循环。问题是我不知道
myObj
的属性名。它可能是任何东西。所以,你不能像上面那样硬编码
人:
年龄