Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript _.map在返回时覆盖值_Javascript_Node.js_Lodash - Fatal编程技术网

Javascript _.map在返回时覆盖值

Javascript _.map在返回时覆盖值,javascript,node.js,lodash,Javascript,Node.js,Lodash,我注意到在使用lodash.ma函数时出现了一些奇怪的行为。(那或我公然忽略了某些东西) 我有以下资料: _this.searches = _.map(body.rows, function(row) { var tmpSearch = new Search(row.value); console.log(tmpSearch.search['name']); return tmpSearch.search; }); Search只是一个带有一些原型函数的标准javasc

我注意到在使用
lodash
.ma
函数时出现了一些奇怪的行为。(那或我公然忽略了某些东西)

我有以下资料:

_this.searches = _.map(body.rows, function(row) {
    var tmpSearch = new Search(row.value);
    console.log(tmpSearch.search['name']);
    return tmpSearch.search;
});
Search
只是一个带有一些原型函数的标准javascript对象

但是,当我检查
\u this.searches
时,每个对象都是相同的,我尝试循环通过它以获得更好的结果:

_.forEach(_this.searches, function(search) {
    console.log(search['name']);
})
地图的
控制台.log
如下所示:

2015-04-03T14:14:29+0800 <log> searches.js:35 () test
2015-04-03T14:14:29+0800 <log> searches.js:35 () Test 2
2015-04-03T14:14:29+0800 <log> searches.js:35 () Testing search
2015-04-03T14:14:29+0800 <log> searches.js:42 () Testing search
2015-04-03T14:14:29+0800 <log> searches.js:42 () Testing search
2015-04-03T14:14:29+0800 <log> searches.js:42 () Testing search
搜索
可在此处找到:
虽然没有什么特别的事情发生。

所以问题是:

Search.prototype.search = {};
只要将
search
属性放入
search
类的原型中,它就会在
search
的所有实例之间共享。因此,此属性的每次更改都会影响所有实例。这就是为什么您总是看到最后分配的值。
要修复它-将此属性放入实例本身,例如,在构造函数中:

var Search = function(searchDoc) {
    this.search = {};
    if(!_.isEmpty(searchDoc)) this.setSearch(searchDoc);
};

请参阅。

body.rows的结构是什么?
row.value
是对象还是类似字符串/整数值的smth?@Kiril
body.rows
是一个包含对象的数组,
row.value
也是一个对象。哇,真不敢相信我忽略了这一点。这肯定解决了问题,非常感谢!