如何用JavaScript在Amazon DynamoDB中移除指定JSON对象?
如何用JavaScript移除DynamoDB数据中family为C的唯一对象?
嘿,这事儿不难,我给你两种实用的JavaScript实现方式,看你需求选就行!
首先先明确你的原始数据结构:
const dynamoDBItem = { Name : "abc", EMail : "abc@gmail.com", Fruits : [ { Name : "name", family: "Z" }, { Name : "name", family: "A" }, { Name : "name", family: "B" }, { Name : "name", family: "C" } ] };
方法一:创建新数组(不修改原始数据)
这种方式遵循**Immutable(不可变)**原则,不会改动原数据,适合需要保留原始数据的场景:
// 解构原对象,替换Fruits数组为过滤后的新数组 const updatedItem = { ...dynamoDBItem, Fruits: dynamoDBItem.Fruits.filter(fruit => fruit.family !== "C") }; // 输出结果,此时原dynamoDBItem完全没变化 console.log(updatedItem);
filter方法会遍历数组,返回所有family不等于C的元素组成的新数组,因为题目说family为C的对象是唯一的,所以不用担心多删的问题。
方法二:直接修改原数组
如果你不需要保留原始数据,想直接修改原对象的Fruits数组,可以用findIndex+splice组合:
// 找到目标元素的索引 const targetIndex = dynamoDBItem.Fruits.findIndex(fruit => fruit.family === "C"); // 因为题目说该元素唯一存在,所以targetIndex肯定不是-1,直接移除即可 dynamoDBItem.Fruits.splice(targetIndex, 1); // 输出修改后的原对象 console.log(dynamoDBItem);
findIndex会返回第一个匹配family === "C"的元素索引,splice(targetIndex, 1)则会从数组中删除该索引位置的1个元素。
补充说明
如果之后要把修改后的数据存回DynamoDB,记得使用AWS SDK对应的方法(比如putItem或者updateItem),核心的数组处理逻辑就是上面两种啦。
内容的提问来源于stack exchange,提问作者developer A
相关产品推荐
相关产品推荐

