【问题标题】:Destructuring object using typescript/javascript [duplicate]使用打字稿/javascript解构对象[重复]
【发布时间】:2020-12-28 10:12:27
【问题描述】:

我有一个带有 50 多个键的 JSON 对象

const data = {a:1, b:2, c:3,....,y:99,z:100}

和 2 个包含此 json 对象键的数组

const arr1 = ["a", "b", "m", "l", "x", "y", "Z"]
const arr2 = ["c", "d", "g", "h", "i", "k", "q"]

现在我想将 data 对象中的所有值复制到 2 个新对象中,其中仅包含 arr1arr2 中存在的那些键的数据到 2 个对象中

【问题讨论】:

  • 到目前为止您尝试了哪些方法,您的解决方案有哪些问题?
  • Object.fromEntries(arr1.map(k => [k, data[k]]))

标签: javascript json typescript


【解决方案1】:

const data = { a: 1, b: 2, c: 3, d: 4, y: 99, z: 100 };

const arr1 = ['a', 'b', 'm', 'l', 'x', 'y', 'Z'];
const arr2 = ['c', 'd', 'g', 'h', 'i', 'k', 'q'];

const res1 = arr1.map(item => ({ [item]: data[item] }));
const res2 = arr2.map(item => ({ [item]: data[item] }));

console.log(res1);
console.log(res2);

【讨论】:

  • OP 想要 2 个对象,而不是对象数组
【解决方案2】:

也许你可以试试,很简单,有很多方法可以做。

var valuesFromArr1 = arr1.map(key => data[key]);

【讨论】:

  • OP 想要 2 个对象,其中的键来自 2 个数组。不是值数组
  • “现在我想将数据对象中的所有值复制到 2 个新对象中,其中仅包含 arr1 和 arr2 中存在的键的数据到 2 个对象中”。 “仅包含数据”
【解决方案3】:

如果您希望将所有键放在一个对象中,请考虑使用 Array reduce 方法。在这里,我将其抽象为一个可重用的函数,并将其应用于您想要的每个数组。

const data = {a:1, b:2, c:3, y:99, z:100};

const arr1 = ["a", "b", "c"];
const arr2 = ["c", "y", "z"];

function arrToData(arr, data) {
  return arr.reduce((acc, el) => {
    acc[el] = data[el];
    return acc;
  }, {});
}

console.log(
  arrToData(arr1, data),
  arrToData(arr2, data)
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 2018-03-06
    • 2018-05-26
    • 2019-05-28
    • 2021-08-26
    • 2017-09-16
    • 2019-09-18
    • 2020-04-11
    相关资源
    最近更新 更多