Sai*_*ran 0 javascript arrays object lodash
让我们说我有一个阵列
var array = ["lionel", "messi"];
Run Code Online (Sandbox Code Playgroud)
我想将该数组元素的值用于对象中的属性值.
var obj = {
"first-name": "cristiano",
"last-name": "ronaldo"
}
Run Code Online (Sandbox Code Playgroud)
我想要最终的对象,
var obj = {
"first-name": "lionel",
"last-name": "messi"
}
Run Code Online (Sandbox Code Playgroud)
我如何在JavaScript中执行此操作?或者是否有一个可以做到这一点的lodash功能?
您只需分配给这些属性:
obj["first-name"] = array[0];
obj["last-name"] = array[1];
Run Code Online (Sandbox Code Playgroud)
例:
var array = ["lionel", "messi"];
var obj = {
"first-name": "cristiano",
"last-name": "ronaldo"
};
obj["first-name"] = array[0];
obj["last-name"] = array[1];
console.log(obj);Run Code Online (Sandbox Code Playgroud)
在ES2015 +中,您可以使用解构赋值:
[obj["first-name"], obj["last-name"]] = array;
Run Code Online (Sandbox Code Playgroud)
例:
var array = ["lionel", "messi"];
var obj = {
"first-name": "cristiano",
"last-name": "ronaldo"
};
[obj["first-name"], obj["last-name"]] = array;
console.log(obj);Run Code Online (Sandbox Code Playgroud)
你在评论中说过:
但如果我必须动态地做什么呢?如何在数组/对象中循环?
如果您的意思是要根据其位置将条目分配给array对象属性,请注意,从ES2015开始,对象属性顺序是新的,并且很容易被误解.obj
但是如果您的对象确实被定义为:使用完全符合ES2015标准的JavaScript引擎,那么
var obj = {
"first-name": "cristiano",
"last-name": "ronaldo"
};
Run Code Online (Sandbox Code Playgroud)
...然后Object.getOwnPropertyNames将可靠地复位["first-name", "last-name"](Object.keys是不是保证),这是因为:
是的,这是很多警告.所以你可以使用它,像这样:
Object.getOwnPropertyNames(obj).forEach((key, index) => {
obj[key] = array[index];
});
Run Code Online (Sandbox Code Playgroud)
例:
var array = ["lionel", "messi"];
var obj = {
"first-name": "cristiano",
"last-name": "ronaldo"
};
Object.getOwnPropertyNames(obj).forEach((key, index) => {
obj[key] = array[index];
});
console.log(obj);Run Code Online (Sandbox Code Playgroud)
再次:这仅适用于完全符合ES2015 +标准的JavaScript引擎,其对象定义如上所示.报告属性的顺序getOwnPropertyNames可能很复杂; 规范中的详细信息.