gpt4 book ai didi

javascript - 对象数组的 knockout 映射,对于某些属性使用 'observe'

转载 作者:行者123 更新时间:2023-12-03 03:16:17 24 4
gpt4 key购买 nike

我想对下面的数组进行深层复制。 结果应该只观察count属性。

 data = [{
id: 1,
code: 'ABC',
count: ko.observable(0)
},{
id: 2,
code: 'JKL',
count: ko.observable(5)
},{
id: 3,
code: 'QWE',
count: ko.observable(1)
}]

我尝试了 ko.mapping.fromJS(ko.mapping.toJS(data));idcode 也被转换为可观察到的。目前我正在使用下面的代码来获得预期的结果。

 var obj = ko.mapping.toJS(data);
var result = [];
obj.forEach(function(o){
var obs = ko.mapping.fromJS(o, {
'observe': "count"
});
result.push(obs);
});
// result will give the expected result

这里我使用了forEach来循环data数组中的每个对象。有没有办法避免 forEach 循环?或如何仅观察对象数组中的 count 属性。

最佳答案

您可以避免使用 forEach 并仅观察 count,如下所示:

var result = ko.mapping.fromJS(data, {observe: 'count'});
console.log(result());
<小时/>

编辑:

根据文档,我们甚至不需要在数据中提及 ko.observable。它应该简单地根据我们的“观察”参数来选择它。因此,也许您可​​能想像这样修改您的数据:

var data = [{
id: 1,
code: 'ABC',
count: 0
}, {
id: 2,
code: 'JKL',
count: 5
}, {
id: 3,
code: 'QWE',
count: 1
}];

然后,使用forEach

var result = [];
data.forEach(function(o){
result.push(ko.mapping.fromJS(o, {observe:'count'}));
});
console.log(result);

这取决于您想使用哪种方法。

关于javascript - 对象数组的 knockout 映射,对于某些属性使用 'observe',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46759642/

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