0

Javascriptで関数を書いていきます。キーを渡すことで処理します。

// generate by coffeescript

var get_key, obj;

obj = [
  { name: 'Ape', sales: 100, location: 'US' },
  { name: 'Bob', sales: 200, location: 'UK' },
  { name: 'Cat', sales: 120, location: 'Hell' }
];

// What I want to do: (of cause it is wrong)

get_key = function(obj, key) {
  var item, value_arr, _i, _len;
  value_arr = [];
  for (_i = 0, _len = obj.length; _i < _len; _i++) {
    item = obj[_i];
    value_arr.push(obj.key);
  }
  return value_arr; // return array containing all values of key in object
};

alert(get_key(obj, 'sales')); // expect return 100,200,120

問題は次のとおりです:「キー」を渡す方法は?

ps この問題で検索するキーワードさえ知りません (下手な英語)。そのため、StackOverflow と Google で答えが見つかりません。正しく聞くコツを教えてください。

どうもありがとう!!

4

3 に答える 3

2
var get_key, obj;

obj = [
  { name: 'Ape', sales: 100, location: 'US' },
  { name: 'Bob', sales: 200, location: 'UK' },
  { name: 'Cat', sales: 120, location: 'Hell' }
];

// What I want to do: (of cause it is wrong)

get_key = function(obj, key) {
  var item, value_arr, _i, _len;
  value_arr = [];
  for (_i = 0, _len = obj.length; _i < _len; _i++) {
    item = obj[_i];
    if (key in item){
        value_arr.push(item[key]);
    }
  }
  return value_arr; // return array containing all values of key in object
};

alert(get_key(obj, 'sales')); // expect return 100,200,120

itemは探しているキーを持つオブジェクトなので、に変更value_arr.push(obj.key);します。変数を介してオブジェクトのプロパティにアクセスするには表記法をvalue_arr.push(item[key]);使用する必要があります。また、配列に追加する前にアイテムにプロパティがあるかどうかを確認するチェックを追加しました。[]key

于 2012-09-16T06:02:47.617 に答える
1
function get_key(arr, key) {
    return arr.map(function(el) {
        return el[key];
    });
}

古いブラウザをサポートする必要がある場合は、map 関数を Array に追加する必要があります (ここを確認してください)。

于 2012-09-16T05:51:32.070 に答える
1
var obj = [
    {
    name: 'Ape',
    sales: 100,
    location: 'US'},
{
    name: 'Bob',
    sales: 200,
    location: 'UK'},
{
    name: 'Cat',
    sales: 120,
    location: 'Hell'}
];

get_key = function(obj, key) {
    var result = [];
    for (var i = 0; i < obj.length; i++) {
        /*
         *  Here, obj[i] gives the object e.g: 
         * { name: 'Ape', sales: 100, location: 'US' }...
         * 
         * and obj[i][key] give the value of corresponding key e.g:
         * 100, 200... (suppose for: sales) 
         */

        result.push(obj[i][key]);
    }
    return result;
};

alert(get_key(obj, 'sales').join(',')); ​

作業サンプル


あなたのコードで

ラインを変えるだけ

item = obj[_i];
value_arr.push(obj.key);// this line

 value_arr.push(item[key]);
于 2012-09-16T06:09:08.253 に答える