一个数组对象,例如let arr = [ { name: "张三", value: "1" }, { name: "张三", value: "12" }, { name: "李四", value: "1" }, { name: "李四", value: "8" }, ];想取出name一样的数据,作为一个数组对象
时间: 2023-07-03 13:15:51 浏览: 64
可以使用 reduce 方法来实现这个需求,具体的代码如下:
```
let arr = [
{ name: "张三", value: "1" },
{ name: "张三", value: "12" },
{ name: "李四", value: "1" },
{ name: "李四", value: "8" },
];
let result = arr.reduce((acc, cur) => {
let index = acc.findIndex((item) => item.name === cur.name);
if (index > -1) {
acc[index].value.push(cur.value);
} else {
acc.push({ name: cur.name, value: [cur.value] });
}
return acc;
}, []);
console.log(result);
```
运行上述代码,输出的结果为:
```
[
{ name: '张三', value: [ '1', '12' ] },
{ name: '李四', value: [ '1', '8' ] }
]
```
这个结果中,每个对象都包含了相同 name 值的数据项的 value 数组。
相关问题
一个数组对象,例如let arr = [ { name: "张三", value: "1", label: "1" }, { name: "张三", value: "12", label: "2" }, { name: "李四", value: "1", label: "1" }, ];取出name相同的对象后,拼接数据成lable为1的新建一个字段存value数据,value为2的新建一个字段存value数据,最终输出let arr1 = [ { name: "张三", value1: "1", value2: "12" }, { name: "李四", value1: "1", value2: "0" }, ];
好的,这是一个数组对象的操作,我们可以使用 JavaScript 进行处理。下面是实现该功能的代码:
```javascript
let arr = [
{ name: "张三", value: "1", label: "1" },
{ name: "张三", value: "12", label: "2" },
{ name: "李四", value: "1", label: "1" },
];
let map = new Map();
for (let obj of arr) {
if (!map.has(obj.name)) {
map.set(obj.name, {});
}
let temp = map.get(obj.name);
if (obj.label === "1") {
temp.value1 = obj.value;
} else if (obj.label === "2") {
temp.value2 = obj.value;
}
}
let arr1 = [];
for (let [name, obj] of map) {
arr1.push({ name, value1: obj.value1 || "0", value2: obj.value2 || "0" });
}
console.log(arr1);
```
解释一下上面的代码:
1. 首先创建一个 Map 对象 `map`,用于存储处理后的数据。
2. 遍历数组 `arr`,对于数组中的每个对象,判断是否在 `map` 中有对应的键名,如果没有,则在 `map` 中新建一个以当前对象的 `name` 为键名的空对象。
3. 获取 `map` 中以当前对象的 `name` 为键名的对象,根据当前对象的 `label` 属性,将当前对象的 `value` 值存储到对应的属性中。
4. 遍历 `map` 中的键值对,将 `name` 和处理后的数据对象转换成一个新的对象,添加到数组 `arr1` 中。
5. 最后输出数组 `arr1`,即为处理后的结果。
希望这个代码可以解决你的问题。
在数组对象里找到name='张三的返回true
如果您需要判断数组中是否存在 `name` 属性等于 `'张三'` 的元素,可以使用 Array.prototype.some() 方法来实现。具体来说,可以使用以下代码:
```
const arr = [
{ name: '张三', age: 18 },
{ name: '李四', age: 20 },
{ name: '王五', age: 22 }
];
const result = arr.some(item => item.name === '张三');
console.log(result); // true
```
在上面的代码中,我们定义了一个包含多个对象的数组 `arr`,然后使用 `arr.some()` 方法来判断是否存在 `name` 属性等于 `'张三'` 的元素。该方法会遍历数组中的所有元素,如果找到第一个符合条件的元素则返回 `true`,否则返回 `false`。
如果您需要更详细的解答或者有其他问题,欢迎继续提问。