Повторы слов

var getRepeats = function(arr) {
var count = {};
for (var i = 0; i < arr.length; i++) {
if (count[arr[i]] === undefined) {
count[arr[i]] = 1;
} else {
count[arr[i]]++;
}
}
return count;
};

1 Симпатия

var getRepeats = function(words) {
var valueWords = {};

for (var i = 0; i < words.length; i++) {

var index = 0;

var array = [];

for (var j = 0; j < words.length; j++) {
  if (words[j] === words[i]) {
    array[index] =  words[j];
    index++;
  } else {
    continue;  
  }
  valueWords[words[j]] = array.length;
}    

}

return valueWords;
}

1 Симпатия

var object = {
}

var getRepeats = function(mass){
for(var i=0;i<=mass.length - 1;i++){
var name = mass[i];
object[name] = 0;

 for(var j=0;j<=mass.length - 1;j++){
  if(mass[i] === mass[j]){
    object[name] += 1;

}
}
}
return object
}

let getRepeats = function(currentArray) {
//создаем обьект
  let objectRepeats = {};
//проходим массив циклом
  for(let i = 0; i < currentArray.length; i++){
// обьявляем элемент массива в итерации названием свойства обьекта
    let currentObjProp = objectRepeats[currentArray[i]];
// проверка на undefinded
    if(!currentObjProp) {
     objectRepeats[currentArray[i]] = 1;
    } else {
     objectRepeats[currentArray[i]] += 1;
    }
  }
  return(objectRepeats);
}
1 Симпатия

Т.е. только так можно добавить свойство в объект?

Можно с помощью точечной нотации, но в таком случае не выйдет использовать значение переменной (в этом случае значение элемент массива) как свойство обьекта, ровно как и прочитать его при проверке на undefinded

1 Симпатия

Здравствуйте, мне непонятно что значит: “Переменная хранит ссылку на объект.”

У меня возникли затруднения, когда я захотел поменять местами объекты в отсортированном массиве.

Если создать объект, а после его задать другой переменной - второй объект(копия) не создастся, поэтому при изменении объекта по переменной-ссылке изменяться будет оригинальный объект. Грубо говоря - обе переменные хранят лишь ссылку на объект, а не его самого

 *//пишем функцию *
let getRepeats = function(array) {

*//создаем пустой объект*
let object = {};

*//запускаем цикл (переберем полученный массив)*
for (let i=0; i<array.length; i++){

  *//если элемента из массива нет в объекте*
  if (!(array[i] in object)){

    *//добавляем элемента в объект в виде ключа со значением 1*
    object[array[i]] = 1;
    } else {

      *//если таков элемент уже есть, добавляем его значению единицу*
      object[array[i]] += 1;}

}

*//выводим результат (заполненный объект)*
return object;

};

Помогите, пожалуйста, понять, в чем ошибка. Решил сделать так:

let getRepeats = function (array) {

let obj = {};
  for (let y = 0; y <= array.length-1; y++) {
  if (array.indexOf[array[y]] !== array.lastIndexOf[array[y]]) {
     obj[array[y]] ++
    }
    else {
     obj[array[y]] = 1;
      }}
    return obj  
  }

У меня все элементы массива в объекте = 1 в итоге. Почему не работает obj[array[y]] ++? Никак не могу понять, в чем ошибка. Спасибо за ответ

var getRepeats = function(arr) {
var name = {};
for(i = 0; i < arr.length-1; i++) {
var count = 1;
for(var j = i+1; j < arr.length; j++) {
if(arr[i] === arr[j]) {
count++;
}
}
if(!name[arr[i]]) {
name[arr[i]] = count;
}
}
return name;
}