JS 的一个快速赋值语句
前几天写一个接口的时候,Copilot 给我自动生成了如下代码:
this.data[key] = { ...this.data[key], ...value }; // value 是 Object
以前从未见过的语法,令我大为震撼。当时只知道功能是把 value
中的各个键值浅拷贝到 this.data
,不知道这具体是个什么机制。
今天试了一下,发现它的语法是:
object = { ...newObject };
array = [...newArray];
举例:
// -- 使用字符串(数组)作为来源 --
let a = { };
let key = 'test';
a = { ...key };
// { '0': 't', '1': 'e', '2': 's', '3': 't' }
// -- 使用 JSON 对象作为来源 --
let a = { a: 1 };
let valueObj = { key1: 1, key2: 2, key3: 3 }
a = { ...valueObj };
// { key1: 1, key2: 2, key3: 3 }
let a = { a: 1 };
let valueObj = { key1: 1, key2: 2, key3: 3 }
a = { ...a, ...valueObj }; // 把 a 和 valueObj 合并
// { a: 1, key1: 1, key2: 2, key3: 3 }
数组也可以作为源的,毕竟 JavaScript 里 Array 本质上也是 Object 。
数组里的这个语法就只支持数组了:
let a = [0, 0, 0];
let values = [1, 2, 3, 4];
a = [...a, ...values]; // 把 a 和 values 合并
// [0, 0, 0, 1, 2, 3, 4]
values = { a: 1, b: 2 };
a = [ ...a, ...values ];
// TypeError: values is not iterable
应用一下,写一个在数据中搜索特定用户的功能:
let results = [];
for (let index in pendingDb.data) {
if (pendingDb.data[index].uid === uid) {
results.push({ ...pendingDb.data[index], index });
}
}
return results;
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果