如何从另一个对象JavaScript创建对象

时间:2019-06-19 09:00:17

标签: javascript

如何将第一个变量npm install @angular/animations@^6.1 npm install @angular/cdk@^6.1 npm install @angular/material@^6.1 转换为entries变量?

newEntries

3 个答案:

答案 0 :(得分:2)

您可以将.reduceObject.entries配合使用来实现此目的。首先,Object.entries将在您的entries对象中为您提供一组键值对:

[["app", "/main/application/src/app/src/pages/app/src/index.js"], ...]

然后可以使用.reduce建立一个新对象,该对象将获取上述数组的每个内部数组(即:获取每个键值)并将其添加到新对象中。但是,新对象的值是一个带有字符串"@babel/polyfill"的当前值的数组。

请参见下面的实现:

let entries = {
  "app": "/main/application/src/app/src/pages/app/src/index.js",
  "app1": "/main/application/src/app/src/pages/app/src/app1.js",
  "app2": "/main/application/src/app/src/pages/app/src/app2.js"
}

const arr_res = Object.entries(entries).reduce(
                  (acc, [k, v]) => ({...acc, [k]: ["@babel/polyfill", v]}),
                {});
console.log(arr_res);

答案 1 :(得分:0)

以下是假设"@babel/polyfill"不变但很容易更改的快捷方式。

let entries = {
  "app": "/main/application/src/app/src/pages/app/src/index.js",
  "app1": "/main/application/src/app/src/pages/app/src/app1.js",
  "app2": "/main/application/src/app/src/pages/app/src/app2.js"
};

let newEntries = Object.keys(entries).map(key => [key,["@babel/polyfill", entries[key]]])
                                     .reduce((a,c) => {a[c[0]] = c[1]; return a},{});

console.log(newEntries);

如果我没记错的话,Object.entries()Object.keys()要新,所以我将其保留在这里,以防浏览器支持问题。

答案 2 :(得分:0)

我看到您对这个问题有几个很差的答案(编辑:以后的答案并不差)。为了防止您被随机发送出去,您只需遍历属性即可创建一个数组,并使用硬编码的第一个条目并将属性值作为第二个属性。这是一个使用Object.fromEntries(相当新,但易于填充)和Object.entries(有点新,但易于填充)的示例:

let newEntries = Object.fromEntries(
  Object.entries(entries).map(([key, value]) => [key, ["@babel/polyfill", value]])
);

实时示例:

let entries = {
  "app": "/main/application/src/app/src/pages/app/src/index.js",
  "app1": "/main/application/src/app/src/pages/app/src/app1.js",
  "app2": "/main/application/src/app/src/pages/app/src/app2.js"
};

let newEntries = Object.fromEntries(
  Object.entries(entries).map(([key, value]) => [key, ["@babel/polyfill", value]])
);

console.log(newEntries);
.as-console-wrapper {
    max-height: 100% !important;
 }

或者手动进行操作,而不是使用那些新颖的助手:

let newEntries = {};
for (const key in entries) {
  if (entries.hasOwnProperty(key)) {
    newEntries[key] = ["@babel/polyfill", entries[key]];
  }
}

实时示例:

let entries = {
  "app": "/main/application/src/app/src/pages/app/src/index.js",
  "app1": "/main/application/src/app/src/pages/app/src/app1.js",
  "app2": "/main/application/src/app/src/pages/app/src/app2.js"
};

let newEntries = {};
for (const key in entries) {
  if (entries.hasOwnProperty(key)) {
    newEntries[key] = ["@babel/polyfill", entries[key]];
  }
}

console.log(newEntries);
.as-console-wrapper {
    max-height: 100% !important;
 }