gpt4 book ai didi

javascript - 无法使用 map 将对象添加到另一个对象

转载 作者:行者123 更新时间:2023-11-28 06:56:56 24 4
gpt4 key购买 nike

我遇到了一个以前在 JavaScript 中从未见过的问题。这就是我正在做的事情的本质

var doStuff = function(stuff, otherstuff){
return _.map(stuff, function(s){

// Thing needed is a fairly big object
var thingNeeded = _.find(otherstuff, function(os){
return os.whatineed;
});

var new_thing = _.clone(s);
new_thing.new_field = thingNeeded;
return new_thing;
});
};

但是这会返回一个列表,它是原始的 stuff 列表!如果我做这种变化,它甚至会发生

var doStuff = function(stuff, otherstuff){
return _.map(stuff, function(s){

// Thing needed is a fairly big object
var thingNeeded = _.find(otherstuff, function(os){
return os.whatineed;
});


s.new_field = thingNeeded;
return s;
});
};

var doStuff = function(stuff, otherstuff){
return _.map(stuff, function(s){

// Thing needed is a fairly big object
var thingNeeded = _.find(otherstuff, function(os){
return os.whatineed;
});


s['new_field'] = thingNeeded;
return s;
});
};

或者使用_.extend()_.create()的变体。它也不适用于数组原型(prototype)中的 map 。

我不知道我在这里做错了什么。它完全忽略我添加字段。有人可以帮忙吗?

编辑:以供记录

[{thing: 1}, {thing: 2}].map(function(t){
t.welp = 'welp';
});

将按预期返回[{thing: 1, welp: 'welp'}, {thing: 2, welp: 'welp'}]。所以它位于 map 内的某个地方。

再次编辑:

var doStuff = function(stuff, otherstuff){
return _.map(stuff, function(s){

// Thing needed is a fairly big object
var thingNeeded = _.find(otherstuff, function(os){
return os.whatineed;
});

var new_thing = _.clone(s);
new_thing.new_field = thingNeeded;
console.log('stuff:', new_thing.new_field);
return new_thing;
});
};

console.log 将返回我们期望的值 (thingNeeded)。

谢谢!

最佳答案

我认为当您应该使用当前迭代的对象时,您正在使用 map 迭代器中的内容。

这是一个工作 fiddle http://jsfiddle.net/rzkvne23/

var doStuff = function(stuff, otherstuff){
return _.map(stuff, function(s){

var thingNeeded = _.find(otherstuff, function(os){
return os.whatineed === 2;
});

var new_thing = _.clone(s);
new_thing.new_field = thingNeeded;
console.log('stuff:', new_thing.new_field);
return new_thing;
});
};

var a = [{},{},{}];
var b = [{whatineed: 1},{whatineed:2},{whatineed:3}];

console.dir(doStuff(a,b));

关于javascript - 无法使用 map 将对象添加到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32494043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com