如何从数组列表中的对象访问某些元素?
说我有一个数组:
var test = [{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}];
我知道test[1]
会输出{"a":4, "b":5, "c":6"}
。
test[1].b
将输出5
如何在不使用for循环的情况下输出{"b":2, "c":3"}, {"b":5, "c":6"}
?
答案 0 :(得分:1)
你可以这样做:
text.forEach(function(row){
delete row.a;
});
它将从文本行的列表中删除“a”属性。
答案 1 :(得分:1)
过滤器是错误的工具。如果您不想修改原始数组,可以将其映射到包含已删除"a"
属性的原始元素副本的新数组。
var text = [{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}];
var result = text.map(
function(elt) {
var copy = Object.assign({}, elt);
delete copy.a;
return copy;
}
)
答案 2 :(得分:1)
如果你想在没有" a"的情况下返回原始数组的副本。这可能有用:
text.map((el)=> {
delete el.a
return el
})
答案 3 :(得分:1)
作为一项学习练习,您可以使用map
创建一个包含" b"的副本的新对象数组。和" c"在输入数组元素中找到的属性。此示例在映射函数中使用destructuring asignment syntax。
var array1 = [{"a":1, "b":2, "c":"3"}, {"a":4, "b":5, "c":6}];
var array2 = array1.map( obj => {var {b,c} = obj; return {b,c};});
// check output
console.log (JSON.stringify( array2)) // [{"b":2,"c":"3"},{"b":5,"c":6}]

请注意,在JavaScript中复制对象或对象数组时,需要首先识别需要复制的内容以及是否可以复制对象引用。因此,如果您需要复制除之外的所有属性#34; a"属性,这个答案需要修改。
答案 4 :(得分:0)
您有两个选择:使用delete
operator迭代数组:
var text = [{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}];
text.forEach(function(obj) {
delete obj.a;
});
console.log(text);
或者创建除a
属性之外的所有对象的副本:
var text = [{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}];
var newText = text.map(function(obj) {
var newObj = {};
for (var prop in obj) {
if (prop !== 'a') {
newObj[prop] = obj[prop];
}
}
return newObj;
});
console.log(newText);