使用jquery从对象数组中获取属性值数组

awi*_*ley 8 javascript arrays jquery

我想从这里开始:

example = [{
  name: "someone1",
  city: "somewhere1",
  state: "someplace1"
},{
  name: "someone2",
  city: "somewhere2",
  state: "someplace2"
}]
Run Code Online (Sandbox Code Playgroud)

到这里:

example.name = [ "someone1", "someone2" ]
Run Code Online (Sandbox Code Playgroud)

尽可能少的代码.显然我可以循环它并构建数组但我需要在各种对象上执行此操作很多次.我可以编写一个函数来完成它但是很难使我的应用程序的函数足够通用.

在jQuery中有这个快捷方式吗?

Ale*_*har 8

您可以迭代对象键并name使用push以下命令保存在数组中:

example = [{
  name: "someone1",
  city: "somewhere1",
  state: "someplace1"
}, {
  name: "someone2",
  city: "somewhere2",
  state: "someplace2"
}];
var arrNames = [];
//iterate through object keys
Object.keys(example).forEach(function(key) {
  //get the value of name
  var val = example[key]["name"];
  //push the name string in the array
  arrNames.push(val);
});
console.log(arrNames);//prints ["someone1", "someone2"]
Run Code Online (Sandbox Code Playgroud)

在@Felix建议之后(我同意),没有必要使用Object.keys:

example = [{
  name: "someone1",
  city: "somewhere1",
  state: "someplace1"
}, {
  name: "someone2",
  city: "somewhere2",
  state: "someplace2"
}];
var arrNames = [];
//iterate through object keys
example.forEach(function(item) {
  //get the value of name
  var val = item.name
  //push the name string in the array
  arrNames.push(val);
});
console.log(arrNames); //prints ["someone1", "someone2"]
Run Code Online (Sandbox Code Playgroud)

参考

Object.keys()

Array.prototype.forEach()

Array.prototype.push()

  • 刚刚使用对象名称和键名创建了一个通用函数,它完美无瑕.很好的答案,谢谢! (2认同)

She*_*med 6

你可以使用$.mapjQuery中的函数:

var value = $.map(example, function () {
    return this.name;
});
Run Code Online (Sandbox Code Playgroud)

这将返回一个项目数组.


m0m*_*eni 6

我在这里为你做了一个快速测试:http://jsperf.com/jquery-vs-javascriptlvjsklvjsfklsfklsdjfk

它由三个解决方案组成:

一个基本的循环

for (var i = 0; i < example.length; i++) {
    array.push(example[i].name);
}
Run Code Online (Sandbox Code Playgroud)

一个jQuery $ .each()

$.each(example, function(i, item) {
    array.push(example[i].name);
});
Run Code Online (Sandbox Code Playgroud)

一个答案贴在这个帖子上

Object.keys(example).forEach(function(key) {
  //get the value of name
  var val = example[key]["name"];
  //push the name string in the array
  array.push(val);
});
Run Code Online (Sandbox Code Playgroud)

这是结果(更大的栏更好)

基本上你必须要记住的是,jQuery可能有一个由"less code"组成的快捷方式,但实际上它的性能会比你自己编写代码的性能差.