let arr = [ { name: "张三", id: 1, arr: "123112" }, { name: "李四", id: 2, arr: "43534" } ] 使用forEach赛选出这样[ { name: "张三", }, { name: "李四", } ]
时间: 2023-11-10 12:07:19 浏览: 75
可以使用 `Array.prototype.map()` 方法来实现这个需求,代码如下:
```javascript
const filteredArr = arr.map(({ name }) => ({ name }));
console.log(filteredArr); // [{ name: "张三" }, { name: "李四" }]
```
这里使用了对象解构和箭头函数简化代码。`map()` 方法会遍历数组中的每个元素,并返回一个新的数组,新数组中的每个元素都是回调函数的返回值。
相关问题
要想以下JavaScript代码符合预期,空格处应该填什么? let arr = ['张三’, '李四','张三', ‘王五'] let name = arr.___ ( ) console. log(name) console. log(arr .length) 预期输出结果: 张三 3
空格处应该填写 `unique`。代码应该如下所示:
```javascript
let arr = ['张三', '李四', '张三', '王五'];
let name = [...new Set(arr)].join('');
console.log(name);
console.log(arr.length);
```
一个数组对象,例如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`,即为处理后的结果。
希望这个代码可以解决你的问题。
阅读全文