sta*_*der 3 javascript arrays string ecmascript-6
我正在尝试采用这样的数组:
location: [
{Id: "000-000", Name: "Foo"},
{Id: "000-001", Name: "Bar"},
..etc
]
Run Code Online (Sandbox Code Playgroud)
提取 Id 并将它们组合成单个字符串,同时在每个值前面附加静态字符串(“&myId=”)的最有效/最干净的方法是什么?
更简洁地说,将上述数组转换为以下最终结果的最有效方法是什么:
&myId=000-000&myId=000-001
Run Code Online (Sandbox Code Playgroud)
正如标题中所述,如果 ES6 提供了实现此目的的最佳方法,则可以使用它。
使用reduce,提取每个Id:
const location2 = [{Id: "000-000", Name: "Foo"}, {Id: "000-001", Name: "Bar"}];
console.log(
location2.reduce((a, { Id }) => `${a}&myId=${Id}`, '')
);Run Code Online (Sandbox Code Playgroud)
虽然这非常干净,并且只需要对每个项目进行一次迭代,但就效率而言,for如果数组中有大量项目,循环的性能仍然更高:
const location2 = [{Id: "000-000", Name: "Foo"}, {Id: "000-001", Name: "Bar"}];
let output = '';
for (let i = 0, { length } = location2; i < length; i++) {
output += '&myId=' + location2[i].Id;
}
console.log(output);Run Code Online (Sandbox Code Playgroud)