gpt4 book ai didi

JavaScript 复制对象结构(不是属性值)

转载 作者:行者123 更新时间:2023-11-28 17:15:37 25 4
gpt4 key购买 nike

我有一个对象数组,如下例所示。我想创建一个没有数据值的副本。

var fruits = ['Apple', 'Banana'];
var now = new Date();
var x = [{ 'fruits': fruits },
{ 'producer': 'farmer john', 'address': '123 old patch road', 'zip': 90291 },
27, 'hm',
{ 'asked': now }
]

现在假设有一些 JavaScript 函数,新的对象结构将被复制到以下内容:

var theStructure = [{ 'fruits': ['',''] },
{ 'producer': '', 'address': '', 'zip': NaN },
NaN, '',
{'asked': NaN }]

我已阅读 How to copy an object's structure (but not the data) 上的帖子但不知道如何使其适用于我的情况。也许解决方案是使用 case 语句对原始对象进行长时间的解析来处理每种数据类型。

我的应用程序使用 AngularJS,因为有一种简单的方法可以提供解决方案。

最佳答案

这实际上只是一个递归问题,直到你最终得到一种想要删除的对象或值。在您的示例中,您需要区分数字、日期和字符串。这有点棘手,因为 new Date 返回一个对象,但您希望它变成 NaN

尽管如此,也许这足以开始:

var fruits = ['Apple', 'Banana'];
var now = new Date();
var x = [{ 'fruits': fruits }, { 'producer': 'farmer john', 'address': '123 old patch road', 'zip': 90291 }, 27, 'hm', { 'asked': now }]


function stripValues(obj){
if(Array.isArray(obj)) return obj.map(stripValues)
if (typeof obj == 'object') {
return (obj instanceof Date)
? NaN
: Object.entries(obj).reduce((newObj, [key, value]) => {
newObj[key] = stripValues(value)
return newObj
}, {})
}
return isNaN(obj) ? '' : NaN
}
console.log(stripValues(x))

关于JavaScript 复制对象结构(不是属性值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53523940/

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