gpt4 book ai didi

javascript - 在 Redux 操作对象中选择和省略一个函数(lodash)

转载 作者:行者123 更新时间:2023-12-01 17:39:33 26 4
gpt4 key购买 nike

基本上我需要的是从 json 中获取“项目”并重新分配它,并保持其他键不变:第一种方法复制数据。第二个似乎在性能方面很糟糕。第三个是难以阅读和理解。我使用 lodash。但如果不能以巧妙的方式完成,您可以建议我使用不同的库。

function a(name, json) {
return {
type: RECEIVE_DATA,
name,
items: _.get(json, 'data.items', []),
receivedAt: Date.now(),
...json,
};
}

function b(name, json) {
return {
..._.omit(json, 'data'),
type: RECEIVE_DATA,
name,
items: _.get(json, 'data.items', []),
receivedAt: Date.now(),
}
}

function c(name, json) {
return {
..._.transform(json, (result, value, key) =>{
if (key === 'data') {
result['items'] = value['items'];
} else {
result[key] = value;
}
}, {}),
type: RECEIVE_DATA,
name,
receivedAt: Date.now(),
}
}

最佳答案

使用参数destructuring获取 items,和 rest properties收集其余参数:

const json = { another: [], data: { items: [1] } };

function a(name, { data, data: { items = [] }, ...jsonRest } = {}) {
return {
type: 'RECEIVE_DATA',
name,
items,
receivedAt: Date.now(),
...jsonRest
};
}

console.log(a('name', json));

您还可以使用箭头函数稍微缩短 action creator:

const a = (name, { data, data: { items = [] }, ...jsonRest } = {}) => ({
type: RECEIVE_DATA,
name,
items,
receivedAt: Date.now(),
...jsonRest
});

关于javascript - 在 Redux 操作对象中选择和省略一个函数(lodash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41248115/

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