循环的数组,拿到值后,追加给对象
时间: 2023-11-01 19:16:08 浏览: 71
可以使用 `for...of` 循环遍历数组,然后将每个元素追加给对象的数组属性。例如:
```javascript
const obj = {
name: 'Alice',
age: 25,
hobbies: []
};
const arr = ['swimming', 'reading', 'travelling'];
for (const value of arr) {
obj.hobbies.push(value);
}
console.log(obj.hobbies); // ['swimming', 'reading', 'travelling']
```
在上述代码中,我们首先定义了一个空数组属性 `hobbies`,然后使用 `for...of` 循环遍历数组 `arr`,将每个元素依次追加到 `hobbies` 数组中。最后,我们打印出了追加后的 `hobbies` 数组。
相关问题
js中循环后的数组,追加给对象,为什么拿到的都是最后一次数据
如果你在循环中动态追加数组元素到对象属性中,而每次循环追加的元素都是一个引用类型(例如数组或对象),那么最后你拿到的对象属性中存储的引用类型都是最后一次追加的元素的引用,这是因为 JavaScript 中引用类型是按引用传递的,而不是按值传递的。因此,如果你在循环中多次追加同一个引用类型,那么最后对象属性中存储的引用都是同一个,即最后一次追加的引用。
为了避免这种情况,你可以在每次循环中创建一个新的引用类型对象,然后将它追加到对象属性中。这样,每个对象属性存储的引用类型对象都是独立的,不会相互影响。例如:
```javascript
const obj = {
hobbies: []
};
const arr = ['swimming', 'reading', 'travelling'];
for (const value of arr) {
const hobby = { name: value }; // 创建一个新的引用类型对象
obj.hobbies.push(hobby);
}
console.log(obj.hobbies);
// [
// { name: 'swimming' },
// { name: 'reading' },
// { name: 'travelling' }
// ]
```
在上述代码中,我们在每次循环中都创建一个新的对象 `hobby`,它包含一个属性 `name`,值为当前循环迭代的元素值。然后我们将这个新对象追加到 `obj.hobbies` 数组中。这样,`obj.hobbies` 数组中存储的每个对象都是独立的,它们的 `name` 属性值分别为数组元素的值。
js中如何将动态循环出来的数组,追加给对象
可以使用 `for...in` 循环遍历对象的属性,然后将属性值作为数组,依次追加到新的数组中。例如:
```javascript
const obj = {
name: 'Alice',
age: 25,
hobbies: ['swimming', 'reading', 'travelling']
};
const arr = [];
for (const key in obj) {
const value = obj[key];
if (Array.isArray(value)) {
for (const item of value) {
arr.push(item);
}
}
}
console.log(arr); // ['swimming', 'reading', 'travelling']
```
在上述代码中,我们定义了一个对象 `obj`,它包含一个数组属性 `hobbies`。然后,我们定义一个空数组 `arr`,用于存储 `hobbies` 数组中的元素。接着,我们使用 `for...in` 循环遍历对象 `obj` 的属性,获取每个属性值 `value`,然后判断它是否为数组,如果是,则使用 `for...of` 循环遍历数组元素 `item`,并将每个元素依次追加到 `arr` 数组中。最终,我们打印出了追加后的 `arr` 数组。
阅读全文