并列表.找到并返回一份副本
Does List.find return a copy
我希望通过查找和设置返回值来更新users
中的用户。但是,console.log(overview[userI]);
不返回打印null
。
var user = users.find(u => u.id===newUser.id);
var userI = users.findIndex(u => u.id===newUser.id);
user = null;
console.log(overview[userI]);
然后运行如下示例:
var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
function findCherries(fruit) {
return fruit.name === 'cherries';
}
let fruit = inventory.find(findCherries); // { name: 'cherries', quantity: 5 }
fruit.quantity = 6;
console.log(inventory);
然而,这次inventory
确实如我所期望的那样更新了cherries
,现在的值为6。
为什么我在第一个例子中没有看到这种行为?
将先前有对象引用作为值的变量赋值为null,对该对象不起任何作用:
a = { test: 1 };
b = a;
b = null; // this does not influence the value of a.
在上面的例子中,首先让b
共享a
的值,然后又按自己的方式运行。这两次赋值都没有改变a
的值。
但是当你改变一个对象时,这当然会被所有对同一对象的引用注意到:
a = { test: 1 };
b = a;
b.test = 2;
console.log(a.test) // 2
那么在你的例子中,如果你想让你的users
数组得到一个元素被null
替换,你需要改变数组:
var userI = users.findIndex(u => u.id===newUser.id);
if (userI > -1) users[userI] = null;
或者,您也可以使用map
:
var users = users.map(u => u.id===newUser.id ? null : u);
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Javascript返回值只在循环中返回一次
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 给Chai/Mocha一份应该包括在内的部分钥匙清单
- Soundcloud API寻呼-8000的偏移限制是否意味着您可以'I don’我无法得到一份超过8000长的
- 提交一份表格,阿加星也
- 强制 Twitter Epi 库发布状态更新,即使它是上一条推文的副本
- 有window.load'会有问题吗;在'一份文件.准备
- 我是否需要在lib或vendor文件夹中保留一份js库的副本,尽管已经使用npm安装了
- 如何提交一份特定的表格,而不让两者的内容都消失
- Javascript游戏-对象在本地副本上生成,一次上传都没有
- 有没有办法提交一份“假的”照片?表单使用jQuery
- 玉版印刷猫鼬系列;只拿到一份文件
- 从网站上打印一份表格提交
- 并列表.找到并返回一份副本
- 我想做一份半相同的手册,就像这页上的一样
- 为什么redux需要在每次数据更改时生成一份数据副本?
- 一次提交两份表格
- Vue.js是否有一种内置的方式来将持久对象的副本添加到重复数组中?
- ExtJs 4:以一种形式使用相同组件的两个副本