相关疑难解决方法(0)

ES2015解构为一个对象

我试图解构一个对象并将取出的变量应用到它自己的对象中.

例如,对象beforeTest包含a,b,c,d

我想把{a,b}输出并添加到afterTest对象.

就像是...

let afterTest = { a, b } = beforeTest
Run Code Online (Sandbox Code Playgroud)

以下是有效的,但是当你有很多变量时它们并不是很漂亮.

let { a, b } = beforeTest;
let afterTest = Object.assign({}, a, b); //EDIT: This doesn't actually do what I intended, see comment on my question
Run Code Online (Sandbox Code Playgroud)

谁知道有更好的方法来写这个?

谢谢

javascript ecmascript-6

6
推荐指数
1
解决办法
1370
查看次数

如何使用Array.prototype.filter过滤对象?

特定

var arr = [1,2,true,4,{"abc":123},6,7,{"def":456},9,[10]]
Run Code Online (Sandbox Code Playgroud)

我们可以arr使用Number构造函数过滤数组中的数字项

var res = arr.filter(Number); // [1, 2, true, 4, 6, 7, 9, Array[1]]
Run Code Online (Sandbox Code Playgroud)

true[10]预期在所得数组?如果我们替换falsetruearr

var arr = [1,2,false,4,{"abc":123},6,7,{"def":456},9,[10]] 
var res = arr.filter(Number) // [1, 2, 4, 6, 7, 9, Array[1]]
Run Code Online (Sandbox Code Playgroud)

运用 Array.isArray

var res = arr.filter(Array.isArray) // [Array[1]]
Run Code Online (Sandbox Code Playgroud)

String

var res = arr.filter(String) // [1, 2, true, 4, Object, 6, 7, Object, 9, Array[1]]
Run Code Online (Sandbox Code Playgroud)

如果我们想要在arr对象,索引中过滤项目4,7我们会尝试 …

javascript arrays ecmascript-6 ecmascript-7 ecmascript-next

6
推荐指数
1
解决办法
3846
查看次数

如何从对象中破坏部分属性

例如,我有一个像这样的对象:

obj1 = {
     name: 'Bob',
     age:  20,
     career: 'teacher'
  }
Run Code Online (Sandbox Code Playgroud)

现在我需要复制其部分属性而不是所有属性.

obj2 = {
     name: '',
     age: '',
  }
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做obj2.name = obj1.name,如果需要复制许多属性,这将是冗长的.还有其他快速方法可以解决这个问题吗?我试过了

let {name: obj2.name, age: obj2.age} = obj1;

但是得到了错误.

javascript ecmascript-6

6
推荐指数
1
解决办法
294
查看次数

优雅的方式只复制对象的一部分

我想通过从中复制一些属性来从较大的对象创建一个新对象.我知道的所有解决方案都不是很优雅,我想知道是否有更好的选择,如果可能的原生(没有像下面代码末尾那样的附加功能)?

这是我现在通常做的事情:

// I want to keep only x, y, and z properties:
let source = {
    x: 120,
    y: 200,
    z: 150,
    radius: 10,
    color: 'red',
};

// 1st method (not elegant, especially with even more properties):
let coords1 = {
    x: source.x,
    y: source.y,
    z: source.z,
};

// 2nd method (problem: it pollutes the current scope):
let {x, y, z} = source, coords2 = {x, y, z};

// 3rd method (quite hard to read for such simple task): …
Run Code Online (Sandbox Code Playgroud)

javascript javascript-objects

6
推荐指数
3
解决办法
474
查看次数

使用ES2016(ES7)我可以替换下划线的拾取方法吗?

我还没有弄清楚如何使用新的ES语法的一件事是创建一个对象,该对象是基于声明的包含值的另一个的子集.

这是我正在尝试做的事情:

//input
let user = {
  id: 123,
  foo: 'foo',
  bar: 'bar',
  password: 'hunter2'
};

//output
let safeUser = {
  id: user.id,
  foo: user.foo,
  bar: user.bar
}

//NOT this (I don't want to declare excluded vals)
let {password, ...safeUser} = user; 
Run Code Online (Sandbox Code Playgroud)

如果不可能,任何人都知道某件事是否在起作用?我看了es es和贝贝尔但没有出现任何事情.

javascript ecmascript-6 ecmascript-7

5
推荐指数
0
解决办法
79
查看次数

浅拷贝对象遗漏ES6/ES7中的一个或多个属性?

这就是我一直在做的事情:

var props = { id: 1, name: 'test', children: [] }

//copy props but leave children out
var newProps = { ...props }
delete newProps.children

console.log(newProps) // { id: 1, name: 'test' }
Run Code Online (Sandbox Code Playgroud)

有更清洁,更简单的方法吗?

javascript ecmascript-harmony ecmascript-6 babeljs ecmascript-7

5
推荐指数
1
解决办法
2199
查看次数

将对象属性分解为数组值

有什么方法可以解构对象并将其属性分配给数组而不是变量?例如:

const obj = { a: 1, b: 2 };

const { a, b } = obj;
const arr = [a, b];
Run Code Online (Sandbox Code Playgroud)

这可行,但是需要将变量重新声明为数组值。

我试过了:

const arr = [(const { a, b } = obj)];
Run Code Online (Sandbox Code Playgroud)

但这是语法错误。

我有一个类似的想法与Object.values作为

const arr = Object.values((const { red } = chalk));`
Run Code Online (Sandbox Code Playgroud)

...但是有一个同样的问题,就是无法对表达式进行解构。

javascript typescript

5
推荐指数
1
解决办法
194
查看次数

ES6-解构分配-将某些属性从现有对象解压缩到新对象?

是否可以将某个对象的某些键拆包到新对象?

比方说,我想按键(3个拷贝abc从)test对象到一个新的对象(abc)。下面提到的代码将起作用。

const test = {a:1, b:2, c:3, d:4, e:5 };
const {a, b, c} = test;
const abc = { a, b, c, f: 6};
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在一个语句中完成?

还有另一种方法。

const test = {a:1, b:2, c:3, d:4, e:5 };
const abc = { ...test, f: 6};
Run Code Online (Sandbox Code Playgroud)

但是,使用这种方法,我后来不得不删除不需要的键(de在我的情况)。

(最佳情况解决方案:如果我们不必跟踪不需要的密钥。可以有n个不需要的密钥。)

javascript object destructuring ecmascript-6

3
推荐指数
1
解决办法
639
查看次数

是否可以将对象解构为现有变量?

我正在尝试使用对象解构来提取变量,但这些变量已经存在,就像这样

const x=1, y=2 // Those should be 1 and 2
const {x,y} = complexPoint
const point = {x,y}
Run Code Online (Sandbox Code Playgroud)

有没有办法在不重命名解构变量的情况下做到这一点?有些人喜欢这样并更新点避免const定义?

const point = {x,y} = complexPoint
Run Code Online (Sandbox Code Playgroud)

预期的结果应该是使用对象解构

const x=1, y=2 // Those should be 1 and 2
const point = {
  x:complexPoint.x,
  y:complexPoint.y
}
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6 object-destructuring

3
推荐指数
2
解决办法
1107
查看次数

是否存在将对象属性的子集复制到新对象的ES6简写?

考虑以下对象:

const obj = {a: 1, b: 2, c: 3, d: 4, e: 5}
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的语法来创建包含以下内容的新对象:

const obj2 = {a, b, d}
Run Code Online (Sandbox Code Playgroud)

我知道有下划线和lodash .pick(),但我希望有一些我可能不知道的解构技巧.

javascript destructuring ecmascript-6

1
推荐指数
2
解决办法
1114
查看次数

使用 ES6 对象解构创建具有另一个对象的属性和值的对象

我经常困惑 javascript 中的对象解构是否适用于某些情况,我刚刚遇到过一个。在此代码中,我只是从this对象中获取属性并将它们分配给新对象上的相同属性/值data

const data = {
    rating: this.rating,
    title: this.title,
    text: this.text,
    name: this.name,
    location: this.location,
    email: this.email,
    files: this.files
};
Run Code Online (Sandbox Code Playgroud)

是否可以使用某种对象解构来完成此任务,或者它与此用例无关?

javascript ecmascript-6

1
推荐指数
1
解决办法
3038
查看次数