将对象键设为值,并将新键分配给对象数组中的值

Make object key as value and assign new key to value in array of objects

提问人:nb_nb_nb 提问时间:9/6/2023 更新时间:9/6/2023 访问量:15

问:

我有一个具有多个属性的对象数组。我希望能够将属性的键设为值,并为我的值分配一个新键。

我的代码:

var list = [
  {
    you: 100,
    me: 75,
    foo: 116,
    bar: 15,
  },
  {
    you: 234,
    me: 33,
    foo: 356,
    bar: 1,
  },
  {
    you: 567,
    me: 77,
    foo: 99,
    bar: 20,
  },
];

const func1 = () => {
  let field_arr = [];
  for (const obj of list) {
    field_arr.push(
      { id: "you", value: obj.you },
      { id: "me", value: obj.me },
      { id: "foo", value: obj.foo },
      { id: "bar", value: obj.bar }
    );
  }
  func2(field_arr);
};
const func2 = async (vars) => {
  console.log(vars);
};
func1();

我希望我的输出是:

[
  { id: 'you', value: 100 },
  { id: 'me', value: 75 },
  { id: 'foo', value: 116 },
  { id: 'bar', value: 15 },
]
[
  { id: 'you', value: 234 },
  { id: 'me', value: 33 },
  { id: 'foo', value: 356 },
  { id: 'bar', value: 1 },
]
[
  { id: 'you', value: 567 },
  { id: 'me', value: 77 },
  { id: 'foo', value: 99 },
  { id: 'bar', value: 20 }
]
JavaScript 数组函数 对象 ecmascript-6

评论


答:

2赞 Barmar 9/6/2023 #1

您需要将所有参数放入一个数组中。当您为 提供多个参数时,每个参数都是单独推送的。field_arr.push()push()

var list = [
  {
    you: 100,
    me: 75,
    foo: 116,
    bar: 15,
  },
  {
    you: 234,
    me: 33,
    foo: 356,
    bar: 1,
  },
  {
    you: 567,
    me: 77,
    foo: 99,
    bar: 20,
  },
];

const func1 = () => {
  let field_arr = [];
  for (const obj of list) {
    field_arr.push([
      { id: "you", value: obj.you },
      { id: "me", value: obj.me },
      { id: "foo", value: obj.foo },
      { id: "bar", value: obj.bar }
    ]);
  }
  func2(field_arr);
};
const func2 = async (vars) => {
  console.log(vars);
};
func1();

另请参阅将对象转换为对象数组,了解如何更动态地执行此操作,而不是对所有值进行硬编码。id