首页 > 解决方案 > find() 操作对象的替代方法

问题描述

这是我的原始数据/参数:

const reference = ["gYDJWsfSHFBzoGjya", "hp9v53uQqQPRXSYAi"] // expected new reference value
const elementID = "XyLChbksZjenyEHqL" // ID of the array object which should be updated

const data = {
  getContent: {
    content: [
      { _id: "XyLChbksZjenyEHqL", reference: ['hp9v53uQqQPRXSYAi'] },
      // some more objects here
    ]
  }
}

现在我需要用特定的 id 设置数组对象的引用值。

const result = {
  getContent: {
    content: [
      { _id: "XyLChbksZjenyEHqL", reference: ["gYDJWsfSHFBzoGjya", "hp9v53uQqQPRXSYAi"] },
      // some more objects here
    ]
  }
}

我是这样做的:

data.getContent.content
  .find(({ _id }) => _id === elementID).reference = reference

但由于 IE11 不支持 find(),我想问是否有另一种方法来完成这项工作。我不想为那个简单的事情使用 polyfill。

标签: javascriptecmascript-6

解决方案


您可以使用forEach

data.getContent.content.forEach((element)=>{
    if (element.id === elementID){
         element.reference = reference;
    }
});

它以类似的方式工作。您将 a 传递callbackforEach函数,它会在数组的每个元素上执行该回调。

然后,检查当前正在处理的元素是否idelementID.

如果是,那么您reference将该特定元素的 设置为您想要的任何内容。


推荐阅读