x
是一个对象
let x = {a: [0], b: [1], c: [2], d: [3]}
y
是一个数组
let y = [4, 5, 6, 7]
将y
推入x
以使x
成为正确的方法是什么
x = {a: [0, 4], b: [1, 5], c: [2, 6], d: [3, 7]}
我已经使用for
循环完成了,但是也许有更好的方法。
答案 0 :(得分:4)
定义与另一个数组的关联顺序:
let order = ["a","b","c","d"];
let x = {a: [0], b: [1], c: [2], d: [3]};
let y = [4, 5, 6, 7, 8];
y.forEach((n,i) => {
let key = order[i % order.length];
x[key].push(n);
});
答案 1 :(得分:2)
您可以使用此方法完成相同的操作:
Object.entries(x).reduce((acc, [key, arr], index) => {
acc[key] = [...arr, y[index]]
return acc
}, {})
这就是说,正如上面的评论中提到的那样,不能保证键顺序,因此您可能会在某些浏览器或某些条件下遇到意外行为。
答案 2 :(得分:1)
如果您的订单得到保证,并且x和y中项目的长度匹配,那么这样的琐碎事情就会出现:
let x = {
a: [0],
b: [1],
c: [2],
d: [3]
};
let y = [4, 5, 6, 7];
let i = 0;
for (let key in x) {
x[key].push(y[i++]);
}
console.info(x);
答案 3 :(得分:0)
我不知道完整的上下文,但我想您可以使用类似这样的内容:
Object.keys(x).reduce((acc, key, index) => ({...acc, [key]: [...x[key], y[index]]}), {})
答案 4 :(得分:-2)
我认为不可能使用JS对象(如注释中所述),因为不能保证键顺序。另外,这里有一个精美的地图对象,它确实可以满足您的需求:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
它可以作为数组进行迭代,因此保留了密钥插入顺序。这是一个可行的示例。