gpt4 book ai didi

javascript - 获取 concat 以处理类似数组的对象

转载 作者:行者123 更新时间:2023-11-29 16:04:25 25 4
gpt4 key购买 nike

有些地方我将数组更改为类似对象的数组,如下所示:

let arr = ['a','b']
let arrLike = {...arr, length: arr.length}
console.log(arrLike)
> {0: "a", 1: "b", length: 2}

它并不完美,但它允许我通过使用合并来覆盖数组。即:

> let a1 = [1,2,3], b1 = [1,2,3]
> Object.assign(a1, arr)
[ 'a', 'b', 3 ]
> Object.assign(b1, arrLike)
[ 'a', 'b']

这是可取的,但我也希望 concat 工作,

['z'].concat(arr)
> ["z", "a", "b"] // good
['z'].concat(arrLike)
> ["z", {0: "a", 1: "b" length: 2}] // bad

有没有办法修改 arrLike 以便 concat 可以工作?

最佳答案

你需要定义Symbol.isConcatSpreadable告诉 concat() 将其视为类数组:

arrLike[Symbol.isConcatSpreadable] = true;

例子:

let arr = ['a','b'];
let arrLike = {
...arr,
length: arr.length,
[Symbol.isConcatSpreadable]: true
};

console.log(['z'].concat(arrLike))

关于javascript - 获取 concat 以处理类似数组的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48097695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com