Replace/change 项具有相同的键
Replace/change item with same key
使用下划线,我有一个像这样的对象数组 -
myObj = [{"car" : "red" },{"tree" : "green"}];
我收到了一个新对象,我需要用相同的键找到并覆盖一个对象,所以我会像
{"car" : "blue" };
而且还得拿原物把车改成蓝色。这可能带有下划线吗?谢谢!
编辑-为了清楚起见,我得到了 {"car" : "blue"} 我需要将它与原始对象进行比较并找到 "car" 并替换它具有新的价值。谢谢!
当然可以。假设您所有的对象只有一个键:
var myArr = [ { "car" : "red" }, { "tree": "green" } ];
// First, find out the name of the key you're going to replace
var newObj = { "car": "blue" };
var newObjKey = Object.keys(newObj)[0]; // => "car"
// Next, get the index of the array item that has the key
var index = _.findIndex(myArr, function(obj) { return newObjKey in obj; });
// => 0
// Finally, replace the value
myArr[index][newObjKey] = newObj[newObjKey];
仅供参考 findIndex
是 Underscore.js 1.8 的一项功能。如果您使用的是旧版本的 Underscore,则需要将该行替换为如下内容:
var index;
_.find(myObj, function(obj, idx) {
if("car" in obj) {
index = idx;
return true;
}
});
另一种方法如下
myObj = [{"car" : "red" },{"tree" : "green"}];
let object2 = {"car": "blue"}
for(let obj of myObj){
for(let key in obj){
object2[key] ? obj[key] = object2[key] : ''
}
}
这应该动态替换 object2
中与数组 myObj
中对象中的键匹配的任何内容
不需要任何额外的库或疯狂的变量 :) 只是老式的 javascript
EDIT 在 for 循环周围包含类似 if(object2 && Object.keys(object2)){}
的东西可能不是一个坏主意,只是为了确保object2 不是 empty/undefined
使用下划线,我有一个像这样的对象数组 -
myObj = [{"car" : "red" },{"tree" : "green"}];
我收到了一个新对象,我需要用相同的键找到并覆盖一个对象,所以我会像
{"car" : "blue" };
而且还得拿原物把车改成蓝色。这可能带有下划线吗?谢谢!
编辑-为了清楚起见,我得到了 {"car" : "blue"} 我需要将它与原始对象进行比较并找到 "car" 并替换它具有新的价值。谢谢!
当然可以。假设您所有的对象只有一个键:
var myArr = [ { "car" : "red" }, { "tree": "green" } ];
// First, find out the name of the key you're going to replace
var newObj = { "car": "blue" };
var newObjKey = Object.keys(newObj)[0]; // => "car"
// Next, get the index of the array item that has the key
var index = _.findIndex(myArr, function(obj) { return newObjKey in obj; });
// => 0
// Finally, replace the value
myArr[index][newObjKey] = newObj[newObjKey];
仅供参考 findIndex
是 Underscore.js 1.8 的一项功能。如果您使用的是旧版本的 Underscore,则需要将该行替换为如下内容:
var index;
_.find(myObj, function(obj, idx) {
if("car" in obj) {
index = idx;
return true;
}
});
另一种方法如下
myObj = [{"car" : "red" },{"tree" : "green"}];
let object2 = {"car": "blue"}
for(let obj of myObj){
for(let key in obj){
object2[key] ? obj[key] = object2[key] : ''
}
}
这应该动态替换 object2
中与数组 myObj
中对象中的键匹配的任何内容
不需要任何额外的库或疯狂的变量 :) 只是老式的 javascript
EDIT 在 for 循环周围包含类似 if(object2 && Object.keys(object2)){}
的东西可能不是一个坏主意,只是为了确保object2 不是 empty/undefined