js 提取对象某些属性组成新对象
时间: 2023-02-11 21:47:04 浏览: 44
可以使用 JavaScript 中的解构赋值来提取对象的某些属性组成新对象。
例如,假设有一个对象 obj,其中包含属性 a、b、c,要提取其中的 a、c 属性组成新对象,可以这样写:
```
const obj = { a: 1, b: 2, c: 3 };
const { a, c } = obj;
const newObj = { a, c };
console.log(newObj); // { a: 1, c: 3 }
```
也可以在解构赋值的同时重命名属性,例如:
```
const obj = { a: 1, b: 2, c: 3 };
const { a: x, c: y } = obj;
const newObj = { x, y };
console.log(newObj); // { x: 1, y: 3 }
```
还可以结合 Array.map() 方法,提取数组中对象的某些属性组成新数组,例如:
```
const arr = [{ a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6 }];
const newArr = arr.map(({ a, c }) => ({ a, c }));
console.log(newArr); // [{ a: 1, c: 3 }, { a: 4, c: 6 }]
```
相关问题
保留数组对象某些属性
如果你想要保留一个数组对象的某些属性,可以使用 `map` 方法来创建一个新的数组,其中每个元素都是原始数组中的一个对象,但只含有你想要保留的属性。下面是一个示例代码:
```javascript
const originalArray = [
{ name: 'Alice', age: 25, occupation: 'teacher' },
{ name: 'Bob', age: 30, occupation: 'engineer' },
{ name: 'Charlie', age: 35, occupation: 'programmer' }
];
const newArray = originalArray.map(({ name, occupation }) => ({ name, occupation }));
console.log(newArray);
// Output: [
// { name: 'Alice', occupation: 'teacher' },
// { name: 'Bob', occupation: 'engineer' },
// { name: 'Charlie', occupation: 'programmer' }
// ]
```
在这个例子中,我们只保留了每个对象的 `name` 和 `occupation` 属性,而忽略了 `age` 属性。注意,在 `map` 方法中,我们使用了对象解构语法来提取我们感兴趣的属性,然后使用对象字面量语法来创建一个新的对象。
js将数对象某些属性去重后组成一个新的对象并这些属性用逗号分隔
可以使用对象的 reduce 方法和 Set 数据结构来实现。具体操作如下:
```javascript
const arr = [
{name: '张三', age: 20},
{name: '李四', age: 22},
{name: '张三', age: 20},
{name: '王五', age: 25},
{name: '李四', age: 22}
];
const uniqueObj = arr.reduce((unique, item) => {
const key = item.name + item.age;
if (!unique[key]) {
unique[key] = {
name: item.name,
age: item.age
};
}
return unique;
}, {});
const result = Object.values(uniqueObj).map(item => {
return `${item.name}-${item.age}`;
}).join(',');
console.log(result); // "张三-20,李四-22,王五-25"
```
首先使用 reduce 方法对数组进行遍历,同时使用对象的属性来记录已经存在的元素,如果当前元素不存在,则将其添加到对象中。最后使用 Object.values 方法将对象的值转为数组,并使用 map 方法将其转为字符串格式,最后使用 join 方法将其用逗号分隔输出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)