一个obj对象,一个arr数组对象 如何将obj的vlaue值保存进arr数组对象里面
时间: 2023-02-16 22:47:01 浏览: 118
可以使用JavaScript的内置方法push(),将obj的value值添加到arr数组的末尾。示例代码如下:
```
let obj = {value: "example"};
let arr = [];
arr.push(obj.value);
console.log(arr); // ["example"]
```
也可以使用ES6的扩展运算符(...)将obj的value属性值转化为数组,并合并到arr数组中
```
let obj = {value: "example"};
let arr = [...obj.value];
console.log(arr); // ["example"]
```
还可以使用Array.prototype.concat()方法,将obj的value值转化为数组,并合并到arr数组中。
```
let obj = {value: "example"};
let arr = [].concat(obj.value);
console.log(arr); // ["example"]
```
或者使用Object.values()将对象的所有value提取出来放入数组中
```
let obj = {value: "example"};
let arr = Object.values(obj);
console.log(arr); // ["example"]
```
以上方法都可以将obj的value值添加到arr数组对象里面。
相关问题
只有两个数组对象A和B,AB两个数组对进行比较,如果唯一值ID相同就将这个对象放入arr1数组中,如果A有B没有就将这个对象放入arr2中,如果B有A没有就将这个对象放入arr3中 用ES6语法
可以使用ES6中的Map数据结构来实现这个需求,具体代码如下:
```javascript
const A = [{id: 1, name: 'Apple'}, {id: 2, name: 'Banana'}, {id: 3, name: 'Orange'}];
const B = [{id: 1, name: 'Apple'}, {id: 4, name: 'Grape'}, {id: 5, name: 'Peach'}];
const mapA = new Map(A.map(obj => [obj.id, obj]));
const mapB = new Map(B.map(obj => [obj.id, obj]));
const arr1 = [];
const arr2 = [];
const arr3 = [];
for (const [id, objA] of mapA) {
const objB = mapB.get(id);
if (objB) {
arr1.push({...objA, ...objB});
} else {
arr2.push(objA);
}
}
for (const [id, objB] of mapB) {
const objA = mapA.get(id);
if (!objA) {
arr3.push(objB);
}
}
console.log(arr1); // [{id: 1, name: 'Apple'}, ...]
console.log(arr2); // [{id: 2, name: 'Banana'}, {id: 3, name: 'Orange'}]
console.log(arr3); // [{id: 4, name: 'Grape'}, {id: 5, name: 'Peach'}]
```
首先将数组A和B转换成Map数据结构,其中以id为键,对象本身为值。然后遍历数组A中的每个对象,如果在Map B中存在相同id的对象,则将两个对象合并,放入arr1数组中;如果在Map B中不存在相同id的对象,则将该对象放入arr2数组中。接着遍历数组B中的每个对象,如果在Map A中不存在相同id的对象,则将该对象放入arr3数组中。最后输出arr1、arr2和arr3数组即可。
只有两个数组对象A和B对象只有两个key值oid和typeiid,AB两个数组对进行比较,如果对象中的oid和typeiid相同就将这个对象放入arr1数组中,如果A有B没有就将这个对象放入arr2中,如果B有A没有就将这个对象放入arr3中 用ES6语法
可以使用 ES6 中的 Set 和 Map 对象来实现这个功能。具体步骤如下:
```javascript
// 定义两个数组 A 和 B,存放对象
const A = [{oid: 1, typeiid: 2, name: 'obj1'}, {oid: 2, typeiid: 1, name: 'obj2'}];
const B = [{oid: 1, typeiid: 2, name: 'obj3'}, {oid: 3, typeiid: 2, name: 'obj4'}];
// 定义三个 Set 对象,用于存放 A、B、AB 共有的对象
const setA = new Set(A);
const setB = new Set(B);
const setAB = new Set();
// 定义三个 Map 对象,用于存放 A 有 B 没有的对象(arr2)、B 有 A 没有的对象(arr3)以及 AB 共有的对象(arr1)
const map2 = new Map();
const map3 = new Map();
const map1 = new Map();
// 遍历 A 数组,将 A 和 B 共有的对象存入 setAB 中
A.forEach(objA => {
B.forEach(objB => {
if (objA.oid === objB.oid && objA.typeiid === objB.typeiid) {
setAB.add(objA);
}
})
});
// 遍历 setAB,将其中的对象存入 map1 中
setAB.forEach(obj => {
map1.set(JSON.stringify(obj), obj);
});
// 遍历 A 数组,将 A 有 B 没有的对象存入 map2 中
A.forEach(objA => {
if (!setB.has(objA)) {
map2.set(JSON.stringify(objA), objA);
}
});
// 遍历 B 数组,将 B 有 A 没有的对象存入 map3 中
B.forEach(objB => {
if (!setA.has(objB)) {
map3.set(JSON.stringify(objB), objB);
}
});
// 将 map1、map2、map3 转换成对应的数组 arr1、arr2、arr3
const arr1 = Array.from(map1.values());
const arr2 = Array.from(map2.values());
const arr3 = Array.from(map3.values());
```
解释一下代码的思路:
1. 首先使用 Set 对象将 A 和 B 数组中的对象去重,并分别存放到 setA 和 setB 中;
2. 使用 Set 对象 setAB 存放 A 和 B 共有的对象;
3. 使用 Map 对象 map1 存放 AB 共有的对象,其 key 值为对象的 JSON 字符串,value 值为对象本身;
4. 使用 Map 对象 map2 存放 A 有 B 没有的对象,其 key 值为对象的 JSON 字符串,value 值为对象本身;
5. 使用 Map 对象 map3 存放 B 有 A 没有的对象,其 key 值为对象的 JSON 字符串,value 值为对象本身;
6. 最后将 map1、map2、map3 转换成对应的数组 arr1、arr2、arr3 即可。
需要注意的是,上述代码中使用了 JSON.stringify 将对象转换成字符串,这是因为 Set 对象和 Map 对象默认使用的是对象的引用地址进行比较,而不是对象的属性值。因此,需要将对象转换成字符串后再进行比较。
阅读全文