用相同的键替换/更改项目
Replace/change item with same key
使用下划线和我有一个类似于so-的对象数组
myObj = [{"car" : "red" },{"tree" : "green"}];
并且我被传递了一个新的对象,我需要找到它并用相同的密钥覆盖一个对象,所以我会像一样被发送
{"car" : "blue" };
我必须把原来的物体换成蓝色。有下划线可以这样做吗?谢谢
编辑-为了清楚起见,我得到了{"车":"蓝色"},我需要将其与原始对象进行比较,找到"车"并用新值替换它。谢谢
当然。假设所有对象只有一个密钥:
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
是Undercore.js 1.8的一个功能。如果你使用的是旧版本的Undercore,你需要用这样的东西来代替它:
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)){}
之类的内容以确保对象2不是空的/未定义的可能不是一个坏主意
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 正在将数据主题添加到所有项目
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何删除重复的选定项目并替换为数量
- 用相同的键替换/更改项目
- 使用下划线一个接一个地替换每个项目(li)
- 替换字符串中的项目
- 替换项目而不是提供整个路径
- JavaScript:有没有更好的方法来保留你的数组,但有效地连接或替换项目
- 通用控件替换项目 - 如何开始
- 下划线 js 替换对象中的项目
- 查找和替换 JSON 文件中的项目
- 下划线.js:替换集合中的项目
- jQuery UI可排序-替换掉的项目的内容
- 使用Gulp和Gulp替换名称克隆一个项目,但重命名多个文件夹中包含某个单词的文件
- 用不同的减速器替换Redux中的整个树项目
- JQuery Ajax用JQuery函数替换项目
- 替换数组中项目的实例
- Meteor:如何将项目推送到用户集合并创建列表或数组,而不是用新项目替换每个项目
- 替换两个项目之间的字符串