javascript - 用相同的键替换/更改项目

标签 javascript underscore.js

使用下划线,我有一个像这样的对象数组 -

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;
  }
});

关于javascript - 用相同的键替换/更改项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819510/

相关文章:

javascript - 蒙戈数据库;即使用户对象成功更新, postman 也会给出错误

javascript - 通过嵌套对象id获取对象的长度?

javascript - 我应该如何检查 Jasmine 或javascript中的排序语句

javascript - 从网站重定向到 Android 应用程序?

javascript - extjs4 在按钮单击而不是鼠标悬停时显示工具提示

javascript - 简单的 Redux 应用程序,仅当我使用 mergeReducers 时 Counter 返回未定义

javascript - 获取 BehaviorSubject 的值

javascript - 主干集合和下划线函数实现

javascript - 在数组中优雅地查找正则表达式

javascript - 默认 jQuery 别名 ($) 背后的原因