javascript - 在发送到服务器之前在 JS 中准备对象?

标签 javascript ecmascript-6

我正在尝试准备一个对象以 POST 到我的服务器以存储一些信息。这个对象需要我做一些 GET 请求,这取决于用户选择如何收集 POST 所需的所有信息。我意识到我必须修改对象才能真正将它们放入 JSON 中的正确值对中,我不确定是否有更好的方法来做到这一点。

我只是简单地展示了这一点,但实际有 6-7 个非常长的对象,它们都需要修改并放入一个 JSON 中。服务器 API 是这样写的,接受输入,我对此没有任何发言权。

例如: 我从请求中得到什么

object1: {
 id: 1,
 name: "table",
 price: 3499
}

object2: {
 id: 5,
 lat: 48.56,
 lng: -93.45,
 address: "1080 JavaScript Street"
}

我需要它变成什么:

data: {
 map_id: 5,
 product_id: [1],
 product_name: ["table"],
 product_price: [3499],
 start_lat: 48.56,
 start_lng: -93.45,
 start_address: "1080 JavaScript Street"
}

到目前为止,我只是用愚蠢的方法将它们拼接在一起,我只是把它写在这里所以它不起作用,但应该逻辑地显示我的想法:

prepareDataToSend = (object1, object2) => {
 //exclude uninit handling, and newObject init for arrays
 let newObject = {};
 newObject.map_id = object2.id;
 //if there are more of object1 then I have to loop it
 newObject.product_id.push(object1.id);
 newObject.product_name.push(object1.name);
 ...etc
}

我确实得到了我正在寻找的结果,但这感觉真的很低效和愚蠢。更不用说这似乎非常难以维护。有一个更好的方法吗?我觉得我缺少一些技巧。

最佳答案

您可以使用 ES6 对象解构


let object1 = {
 id: 1,
 name: "table",
 price: 3499
};

let object2 = {
 id: 5,
 lat: 48.56,
 lng: -93.45,
 address: "1080 JavaScript Street"
};

// declaring the new object with the new properties names.
let newObject = {
  map_id: '',
  product_id: [],
  product_name: [],
  product_price: [],
  start_lat: '',
  start_lng: '',
  start_address: ''
};

// destructuring "object1"
({id: newObject.product_id[0],
  name: newObject.product_name[0],
  price: newObject.product_price[0]} = object1);

// destructuring "object2"
({id: newObject.map_id,
  lat: newObject.start_lat,
  lng: newObject.start_lng,
  address: newObject.start_address} = object2);

console.log(newObject)

结果:

{
  map_id: 5,
  product_id: [1],
  product_name: ["table"],
  product_price: [3499],
  start_address: "1080 JavaScript Street",
  start_lat: 48.56,
  start_lng: -93.45
}

关于javascript - 在发送到服务器之前在 JS 中准备对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735679/

相关文章:

javascript - DynamoDB - 基于记录数量的条件放置

javascript - For Loop Works 但 return 没有意义

javascript - 如何在 .addEventListener 中访问 Vue.prototype?

javascript - 将函数输入限制为给定的正则表达式格式

javascript - "Guess the number"小游戏无法按预期运行

javascript - 如何在 JS 中平滑地舍入百分比

javascript - 向多个父级发送事件以触发函数 Angular 5

javascript - 如何合并两个具有不同属性的对象

javascript - 如何使用延迟对象来存储结果并在下次从本地内存中提供服务?

javascript - 理解 Wasm (WebAssembly) 原型(prototype)