例:
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}]
var newArr = _.enhance(arr, { married : false });
console.log(newArr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
これを行うための何かを探しています。 enhanceはlodashには存在しないことに注意してください。 lodashでこれを行うことは可能ですか?
そうでない場合-追加可能ですか?
おかげで、
おそらくあなたのオブジェクトをextend
each
したいでしょう。
muは短すぎて、私の言葉遊びを殺してしまいましたが、素晴らしい点を示しています。まったく新しいアレイを作成するために更新されました。
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var newArr = _.map(arr, function(element) {
return _.extend({}, element, {married: false});
});
ライブラリに追加する場合は、
_.enhance = function(list, source) {
return _.map(list, function(element) { return _.extend({}, element, source); });
}
ES6構文を使用します。これはあなたに役立つと思います。
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
arr.map((element) => {
return element.married = false;
});
console.log(arr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
lodash およびES6矢印表記を使用すると、ソリューションは非常に短くなります。
const newArr = _.map(arr, o => _.extend({married: false}, o));
注:このオブジェクトを変更すると元の配列がそのまま残るため、最初の引数としてオブジェクト{married: false}
を使用します。ただし、これはmarried
が結果のオブジェクトの最初のフィールドになることを意味しますが、これはおそらく関係ありません。
関数lodashには、マージに最も近い関数があります。 http://lodash.com/docs#merge
Mergeの仕組みとやりたいことのわずかな違いは、arrと同じ長さの配列が必要なことです。
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var marriedArr = [{married : false}, {married : false}];
var newArr = _.merge(arr, marriedArr);
console.log(newArr);
あなたがしようとする場合:
var newArr = _.merge(arr, {married : false});
マージはconcatのように機能します。