Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript从数组中的所有对象中提取某些属性_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

javascript从数组中的所有对象中提取某些属性

javascript从数组中的所有对象中提取某些属性,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个具有相同属性的对象数组。每个对象大约有一百个属性。我只想在一个新阵列中保留一小部分: var dummyArray = [{ "att1": "something", "att2": "something", ..., "att100": "something"}, { "att1": "something", "att2": "something", ..., "att100": "something"}, ...]; 如何筛选/映射/减少。。。然后提取有趣的键 const newD

我有一个具有相同属性的对象数组。每个对象大约有一百个属性。我只想在一个新阵列中保留一小部分:

var dummyArray = [{ "att1": "something", "att2": "something", ..., "att100": "something"}, { "att1": "something", "att2": "something", ..., "att100": "something"}, ...];
如何筛选/映射/减少。。。然后提取有趣的键

const newDummArray = dummyArray.map(function(item) { 
    delete item.att1; 
    delete item.att3; 
    delete item.att15;
    // ... (long list)
    return item; 
});
如何仅为每个对象保留
att20
att30
att70
att80
,并删除其余对象?

用于获取属性,并使用以下方法生成新对象:

const dummyArray=[{“att20”:“att20”,“att30”:“att30”,“att70”:“att70”,“att80”:“att80”},{“att20”:“att20”,“att30”:“att30”,“att70”:“att70”,“att80”:“att80”}];
const result=dummyArray.map({att20,att30,att70,att80})=>({
20时,
零时三十分,
att70,
att80
}));
控制台日志(结果)用于获取属性,并使用以下命令生成新对象:

const dummyArray=[{“att20”:“att20”,“att30”:“att30”,“att70”:“att70”,“att80”:“att80”},{“att20”:“att20”,“att30”:“att30”,“att70”:“att70”,“att80”:“att80”}];
const result=dummyArray.map({att20,att30,att70,att80})=>({
20时,
零时三十分,
att70,
att80
}));

控制台日志(结果)map创建一个新数组,因此不需要删除任何内容,而是创建一个有趣的键数组并返回它

var dummyArray=[{
“att1”:“某物”,
“att2”:“某物”,
“att20”:“某物”,
“att100”:“某物”
}, {
“att1”:“某物”,
“att2”:“某物”,
“att20”:“某物”,
“att100”:“某物”
}];
设x=dummyArray.map((项)=>{
返回{
属性20:item.att20
}
})

log(x)
map创建一个新数组,因此不需要删除任何内容,而是创建一个有趣的键数组并返回它

var dummyArray=[{
“att1”:“某物”,
“att2”:“某物”,
“att20”:“某物”,
“att100”:“某物”
}, {
“att1”:“某物”,
“att2”:“某物”,
“att20”:“某物”,
“att100”:“某物”
}];
设x=dummyArray.map((项)=>{
返回{
属性20:item.att20
}
})

console.log(x)
将要保留的道具存储在一个数组中,然后为每个对象将需要的道具转移到一个新对象

var dummyArray=[{“att1”:“something”,“att2”:“something”,“att100”:“something”},{“att1”:“something”,“att2”:“something”,“att100”:“something”}];
var Propstokep=[“att1”,“att100”];
var result=dummyArray.map(项=>{
常量obj={};
用于(前拱的常量支柱){
obj[prop]=项目[prop];
}
返回obj;
})

console.log(result)
将要保留的道具存储在一个数组中,然后为每个对象将需要的道具转移到一个新对象

var dummyArray=[{“att1”:“something”,“att2”:“something”,“att100”:“something”},{“att1”:“something”,“att2”:“something”,“att100”:“something”}];
var Propstokep=[“att1”,“att100”];
var result=dummyArray.map(项=>{
常量obj={};
用于(前拱的常量支柱){
obj[prop]=项目[prop];
}
返回obj;
})

log(result)
这里有一个函数,它接受一个对象,并只提取您想要的属性。它作为第二个参数通过数组

优点:更直接、更干净。特别是当您只需要从一个对象中提取时

如果你有一个对象列表。映射列表并在每次迭代中提取

function objectExtract(obj, properties) {
    return properties.reduce((result, prop) => {
        if (obj.hasOwnProperty(prop)) {
            result[prop] = obj[prop];
        }
        return result;
    }, {});
}
在这里阅读有关减少的内容

使用: (redux的真实示例)

(以问题为例)


这里有一个函数,它接受一个对象,并且只提取您想要的属性。它作为第二个参数通过数组

优点:更直接、更干净。特别是当您只需要从一个对象中提取时

如果你有一个对象列表。映射列表并在每次迭代中提取

function objectExtract(obj, properties) {
    return properties.reduce((result, prop) => {
        if (obj.hasOwnProperty(prop)) {
            result[prop] = obj[prop];
        }
        return result;
    }, {});
}
在这里阅读有关减少的内容

使用: (redux的真实示例)

(以问题为例)


对于通用函数来说,这是很好的,但当密钥列表是先验的时,效率会很低。@Alnitak是的,但是在ori-dori和brk解决方案中存在代码重复(密钥名称重复)。我认为代码复制(以及任何过早的优化混乱)比稍微慢一点但更灵活的代码更糟糕。这对于通用函数来说是不错的,但当密钥列表是先验的时效率会很低。@Alnitak是的,但也就是说,在ori-dori和brk解决方案中存在代码复制(密钥名称重复)。我认为代码复制(以及任何过早的优化混乱)比稍微慢一点但更灵活的代码更糟糕。不知何故,其他答案中的扩展运算符
给我带来了麻烦。真正的函数
objectExtract
非常适合我。不知何故,其他答案中的spread操作符
给我带来了麻烦。真正的函数
objectExtract
非常适合我。
var dataSourceArray = [{
  "att1": "something",
  "att2": "something",
  "att20": "something",
  "att100": "something"
}, {
  "att1": "something",
  "att2": "something",
  "att20": "something",

  "att100": "something"
}];

let x = dataSourceArray.map((item) => {
  return objectExtrac(item, ['att100', 'att2']);
});