如何通过敲除映射(ko.utils)向数组中的每个对象添加新属性(索引)?

Posted

技术标签:

【中文标题】如何通过敲除映射(ko.utils)向数组中的每个对象添加新属性(索引)?【英文标题】:How to add new property (index) to each object in array with mapping of knockout (ko.utils)? 【发布时间】:2018-03-28 08:50:42 【问题描述】:

是否有任何实用程序可以将数组中每个对象的索引添加为淘汰赛 js 中的属性? 我分两步执行此操作,我想同时为每个对象添加索引属性,并将其推送到数组中。这是我的代码。

ko.utils.arrayPushAll(array,
        ko.mapping.fromJS(result)());

for (var i = 0; i < array.length; i++) 
   array[i].index = i;

【问题讨论】:

有什么理由将索引放入数组元素中? 不确定为什么要将索引作为属性。修改数组是否需要更新? 【参考方案1】:

可能无法回答您的问题:

如果您在 foreach: 绑定中循环遍历数组,您将有一个可观察的 $index 可供您引用数组中的索引。

如果您将数组设置为 observableArray,则可以将 computedObservable 附加到执行以下操作的模型:

myArray()[i].index = ko.pureComputed(()=>myArray().indexOf(myArray()[i]))

我相信 index 将是一个 observable,它会在数组更改时通知订阅者(因此需要重新计算索引)。

【讨论】:

以上是关于如何通过敲除映射(ko.utils)向数组中的每个对象添加新属性(索引)?的主要内容,如果未能解决你的问题,请参考以下文章

Knockout中ko.utils中处理数组的方法集合

Knockout中ko.utils中处理数组的方法集合

淘汰赛添加到数组的数组

如何通过 React 中的嵌套对象数组进行映射

UI未使用ko.utils.arrayFilter进行更新

使用敲除映射插件将深度层次化的对象映射到自定义类