如何编写一个函数,在ES6中以最紧凑的方式只占用少量属性?
我已经提出了使用解构+简化对象文字的解决方案,但我不喜欢在代码中重复的字段列表.
有更薄的解决方案吗?
(v) => {
let { id, title } = v;
return { id, title };
}
Run Code Online (Sandbox Code Playgroud) javascript destructuring ecmascript-harmony ecmascript-6 ecmascript-next
我们假设我有以下对象:
const user = {
id: 42,
displayName: "jdoe",
fullName: {
firstName: "John",
lastName: "Doe"
}
};
Run Code Online (Sandbox Code Playgroud)
而我只想要id和fullName.
我会做以下事情:
const { id, fullName } = user
Run Code Online (Sandbox Code Playgroud)
轻松,对吧?
现在让我们假设我想根据另一个变量的值来进行解构fields.
const fields = [ 'id', 'fullName' ]
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:我如何根据一系列密钥进行解构?
我无耻地尝试了以下但没有成功:
let {[{...fields}]} = user和let {[...fields]} = user.有什么办法可以做到这一点吗?
谢谢
我一直在阅读ES6中介绍的解构分配.
这种语法的目的是什么,它为什么被引入,以及它在实践中如何使用的一些例子?
我试图在连接后从蓝牙设备返回数据,因为要使用读写功能,需要一些数据。示例数据name, overflowServiceUUIDs, solicitedServiceUUIDs, mtu, rssi...和许多其他数据。因为如果我想读或写,我需要一些属性。我正在使用图书馆react-native-ble-plx。
设备连接后,我丢失了一些值。
type DeviceState = {
connected: boolean;
services: Service[];
device: Device | null;
characteristics: Record<string, Characteristic[]>;
};
const INITIAL_DEVICE_STATE = {
connected: false,
services: [],
device: null,
characteristics: {},
};
Run Code Online (Sandbox Code Playgroud)
const [adapterState, setAdapterState] = useState(false);
const [bleDevices, setBleDevices] = useState<Device[]>([]);
const [isScanning, setIsScanning] = useState(false);
const [connectedDevice, setConnectedDevice] = useState<DeviceState>(
INITIAL_DEVICE_STATE,
);
# The state isScaning is used to be if we are scanning devices.
# The connectedDevice …Run Code Online (Sandbox Code Playgroud) bluetooth bluetooth-lowenergy typescript react-native react-native-ble-plx
我在Javascript中有一个关联数组对象,我只需要一部分.使用常规数组,我只使用切片来获取我需要的部分,但显然这不适用于关联数组.是否有任何内置的Javascript函数,我可以使用它只返回此对象的一部分?如果没有,那么这样做的最佳做法是什么?谢谢!
最好用例子来解释.以下工作在es6中创建一个由现有对象的一些键组成的对象:
var o = {a:1, b: 2, c: 3}
var {a, c} = o
var subsetObj = {a, c} // will be: {a:1, c:3}
Run Code Online (Sandbox Code Playgroud)
这里有两个缺点:
a和c变量来污染局部变量范围,除非作为创建子集对象的方法.有没有办法在一个声明中完成相同的事情,而不引入不必要的本地人a和c?
我很惊讶为什么这么难找到。
我正在尝试使用适当的 sql 将我的整体架构转换为我的 Node Express 应用程序的 3 层架构。
在架构更改之前1 个文件entry.js 1 个具有业务逻辑的端点 具有原始 sql 的函数,在验证 res.body 对象后调用
后
使用的技术 - 使用 .js 而不是 .ts - Nodejs - Express -
约束 - 我无法使用 postgres 或 sequlize,因为它们不支持我正在使用的专有数据库。
是否可以使用解构赋值语法来将数据对象提取到另一个对象而不是不同的变量中?
产生不同变量的示例 (foo, bar):
var {p: foo, q: bar} = {p: 42, q: true};
console.log(foo); // 42
console.log(bar); // true Run Code Online (Sandbox Code Playgroud)
相反,我需要创建一个包含以下属性的新对象:
var n = {
foo: 42,
bar: true
}
Run Code Online (Sandbox Code Playgroud) 我知道这个现有的问题,但我只对普通的javascript解决方案感兴趣(没有像lodash这样的外部库).
什么是最干净的方式(包括所有ES6的善良和超越 - 像对象休息和传播等)从javascript中获取具有来自另一个对象的道具子集的对象?
可以说,我要挑foo,bar和baz从source对象.我目前有两个解决方案,我不喜欢它们:
1.
const result = {
foo: source.foo,
bar: source.bar,
baz: source.baz
};
Run Code Online (Sandbox Code Playgroud)
2.
const { foo, bar, baz } = source;
const target = { foo, bar, baz };
Run Code Online (Sandbox Code Playgroud)
第二个是较短但是它用一些变量污染了当前的执行范围,并且它们的列表无论如何都必须写入两次.
PS.我也不想Object.prototype用一些辅助方法扩充或调用一些自定义函数来实现这一点.
我正在学习React,在此过程中,我正在开发自己的JavaScript技能,这些技能目前处于初学者水平。我有一个代表注册表单的组件,表单的输入值(用户名,电子邮件密码等)存储在该组件的状态中。
表单的状态如下:
this.state = {
username: "",
password: "",
email: "",
firstName: "",
lastName: "",
country: "",
region: "",
phoneNumber: "",
selectCountries: []
};
Run Code Online (Sandbox Code Playgroud)
留下来,我想创建一个新对象以传递给注册方法,该方法仅包括用户名,电子邮件和密码字段。最好的方法和最快的方法是什么?
目前,我要做的是手动映射所需的属性,如下所示:
const { username, email, password } = this.state;
let registrationData = {
username, email, password
};
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?有什么办法可以将这两个语句合并为一个?
任何输入将不胜感激,非常感谢!
javascript ×8
ecmascript-6 ×6
arrays ×1
babeljs ×1
bluetooth ×1
express ×1
node.js ×1
object ×1
odm ×1
react-native ×1
reactjs ×1
sql ×1
typescript ×1